This document discusses internationalization and localization challenges for web applications. It proposes using a template engine that strictly enforces separation of model and view to address these challenges. This allows localization of data values without duplicating code. It also describes automatically rendering values like dates and numbers according to locale. The template engine discussed, StringTemplate, supports localization of page text, locale-specific site designs, and automatic data localization while maintaining strict separation of model and view.
People soft application-designer-practice-8.43cesarvii
This document discusses PeopleSoft Application Designer and the steps to create a PeopleSoft application. It describes Application Designer as a tool for developing web-enabled PeopleSoft applications. It then outlines the 9 simple steps to create an application, which include creating field, record, page, component, and menu definitions and assigning security. The document also provides details on creating components and field definitions, including field types, formats, and properties.
The document provides an introduction to App Designer fundamentals. It outlines the lesson objectives which are to list App Designer features, discuss relational databases and definitions, describe the integrated platform, and understand course goals. The goals of the course are also defined, which are to identify App Designer components, understand fields, records, pages, and menus, use the registration wizard, and access PIA pages.
The document describes a programming language called BAIK, which stands for Bahasa Anak Indonesia untuk Komputer (Indonesian Children's Language for Computers). BAIK is designed to have syntax modeled on the Indonesian language to support multitier web development. It implements an Indonesian parsing engine and uses a binary search tree for memory allocation. The goal is to build a real programming language using a simple structure design and Indonesian lexical words for web development.
Web engineering UNIT IV as per RGPV syllabusNANDINI SHARMA
Technologies for Web Applications: Introduction of XML, Validation of XML documents, DTD, Ways to use XML, XML for data files, HTML Vs XML, Embedding XML into HTML documents, Converting XML to HTML for Display, Displaying XML using CSS and XSL, Rewriting HTML as XML, Relationship between HTML, SGML and XML, web personalization , Semantic web,
Semantic Web Services, Ontology.
The document discusses JSP application models and frameworks. It describes the Model 1 and Model 2 architectures. Model 1 uses scripting elements and is page-centric, while Model 2 follows the MVC pattern and is suitable for complex applications. The J2EE framework provides enterprise services and uses components like servlets, session beans, and entity beans. Exceptions can occur during translation or at request time, and unhandled exceptions are forwarded to an error page.
PYFML- A TEXTUAL LANGUAGE FOR FEATURE MODELINGijseajournal
The document describes PyFML, a new textual feature modeling language based on Python. PyFML aims to generalize classical feature models by supporting extensions like cardinalities, attributes, and complex cross-tree constraints. It uses the textX meta-language to build the PyFML grammar and maps feature models to a Python object representation that can be analyzed by the PyConstraint solver. The language is designed to provide a human-readable notation for feature models while enabling scalable analysis of large problems.
IBM Solutions '99 XML and Java: Lessons LearnedTed Leung
The document discusses using XML and Java together for building applications. It provides background on XML and Java technologies including parsers, schemas, stylesheets, and servlets. Architectures are presented that use servlets to integrate XML, business objects, and databases in both applet-based and web-based applications. Benefits of the XML and servlet approach include leverage of web server technologies, high scalability, simplified integration, and support for multiple front-ends.
The document provides a summary of Lessly Raja's professional experience as a Senior Software Engineer with over 6 years of experience in .NET development. It includes details of his education, technical skills in languages like C#, ASP.NET, and frameworks like .NET and SQL Server. It also summarizes some of his past projects including work on a lawson project at Steria involving LightSwitch, a loan origination system called Catapult at ISGN Technologies, and other projects involving mortgage applications and funeral home accounts.
People soft application-designer-practice-8.43cesarvii
This document discusses PeopleSoft Application Designer and the steps to create a PeopleSoft application. It describes Application Designer as a tool for developing web-enabled PeopleSoft applications. It then outlines the 9 simple steps to create an application, which include creating field, record, page, component, and menu definitions and assigning security. The document also provides details on creating components and field definitions, including field types, formats, and properties.
The document provides an introduction to App Designer fundamentals. It outlines the lesson objectives which are to list App Designer features, discuss relational databases and definitions, describe the integrated platform, and understand course goals. The goals of the course are also defined, which are to identify App Designer components, understand fields, records, pages, and menus, use the registration wizard, and access PIA pages.
The document describes a programming language called BAIK, which stands for Bahasa Anak Indonesia untuk Komputer (Indonesian Children's Language for Computers). BAIK is designed to have syntax modeled on the Indonesian language to support multitier web development. It implements an Indonesian parsing engine and uses a binary search tree for memory allocation. The goal is to build a real programming language using a simple structure design and Indonesian lexical words for web development.
Web engineering UNIT IV as per RGPV syllabusNANDINI SHARMA
Technologies for Web Applications: Introduction of XML, Validation of XML documents, DTD, Ways to use XML, XML for data files, HTML Vs XML, Embedding XML into HTML documents, Converting XML to HTML for Display, Displaying XML using CSS and XSL, Rewriting HTML as XML, Relationship between HTML, SGML and XML, web personalization , Semantic web,
Semantic Web Services, Ontology.
The document discusses JSP application models and frameworks. It describes the Model 1 and Model 2 architectures. Model 1 uses scripting elements and is page-centric, while Model 2 follows the MVC pattern and is suitable for complex applications. The J2EE framework provides enterprise services and uses components like servlets, session beans, and entity beans. Exceptions can occur during translation or at request time, and unhandled exceptions are forwarded to an error page.
PYFML- A TEXTUAL LANGUAGE FOR FEATURE MODELINGijseajournal
The document describes PyFML, a new textual feature modeling language based on Python. PyFML aims to generalize classical feature models by supporting extensions like cardinalities, attributes, and complex cross-tree constraints. It uses the textX meta-language to build the PyFML grammar and maps feature models to a Python object representation that can be analyzed by the PyConstraint solver. The language is designed to provide a human-readable notation for feature models while enabling scalable analysis of large problems.
IBM Solutions '99 XML and Java: Lessons LearnedTed Leung
The document discusses using XML and Java together for building applications. It provides background on XML and Java technologies including parsers, schemas, stylesheets, and servlets. Architectures are presented that use servlets to integrate XML, business objects, and databases in both applet-based and web-based applications. Benefits of the XML and servlet approach include leverage of web server technologies, high scalability, simplified integration, and support for multiple front-ends.
The document provides a summary of Lessly Raja's professional experience as a Senior Software Engineer with over 6 years of experience in .NET development. It includes details of his education, technical skills in languages like C#, ASP.NET, and frameworks like .NET and SQL Server. It also summarizes some of his past projects including work on a lawson project at Steria involving LightSwitch, a loan origination system called Catapult at ISGN Technologies, and other projects involving mortgage applications and funeral home accounts.
PHP is a scripting language commonly used for web development. It supports both procedural and object-oriented programming. This document discusses techniques for modeling PHP code, including using structure charts to represent procedural code and UML class diagrams to represent object-oriented code. Modeling tools like MacA&D and WinA&D can generate code from these models and extract models from existing code to help organize and communicate the structure of PHP projects.
The document discusses domain-specific languages (DSLs) and the Eclipse Modeling Framework (EMF) Text tool. It provides an overview of DSLs and how EMFText can be used to define the concrete syntax and develop tools for textual DSLs. The presentation covers topics such as defining the meta-model and syntax, customizing code generation, and integrating DSLs with other Eclipse frameworks. EMFText is presented as a tool for easily defining textual syntax for Ecore meta-models and generating full-fledged Eclipse editors for working with DSL models.
.NET is a software framework developed by Microsoft that includes a runtime environment, class libraries and tools to develop various types of applications. The .NET Framework provides a common language runtime (CLR) that compiles code into an intermediate language and provides services like memory management and security. It also includes a base class library for developing Windows forms, web forms, web services and more using languages like C# and Visual Basic. .NET aims to provide a unified platform for developing desktop, web and mobile applications using common languages and libraries.
This document provides a case study on using CA ERwin Data Modeler (CA ERwin DM) and CA ERwin Model Manager (CA ERwin MM) across insurance industries. It discusses why these tools were chosen over other options, how strategic business elements like vision and goals impact data modeling. Key elements of the tools like opportunities/threats and capabilities are examined. The document also includes practical demonstrations of using the tools, including reverse engineering, comparing models, and integrating the tools. Appendices provide a SWOT analysis and sample data model.
Overlapping optimization with parsing through metagrammarsIAEME Publication
This document describes techniques for improving the performance of a meta framework developed by combining C++ and Java language segments. The meta framework identifies and parses source code containing C++ and Java statements using a metagrammar. Bytecodes are generated from the abstract syntax tree and optimized using techniques associated with the metagrammar, such as constant propagation. Constant propagation identifies constant values and replaces variables with those values to simplify expressions and reduce unnecessary computations. Other optimizations discussed include function inlining, exception handling, and eliminating unreachable code through constant folding. The goal is to develop an optimized meta framework that generates efficient bytecodes for hybrid C++ and Java source code.
The document discusses database application development and defines key concepts such as:
- Client/server architectures with two-tier and three-tier systems that partition application logic between clients and servers.
- Technologies for developing database-driven web applications including languages like HTML, XML, and frameworks like ASP.NET.
- Storing and querying XML documents using technologies like XML Schema, XPath, and XQuery.
Anvita Web Contentfor Indian Language 15mar2001guest6e7a1b1
The document discusses enabling Indian languages on the web. It covers the categorization of Indian languages into four types based on how words are formed by adding affixes and clitics. It describes standards for representing Indian language characters like ISCII and fonts standards. It discusses approaches for dynamic content creation and displaying Indian languages online using techniques like Unicode encoding, dynamic fonts using PFR/EOT formats, and ensuring compatibility across browsers. Case studies are also mentioned.
A basic primer for the i18n and l10n students and learner aspirants. Also captured Real time facts and practices which helps for the developers who build Global Enterprise Applications.
PHP is an interpreted programming language which was initially developed to enable the
creation of dynamic web pages. It is mainly used in the development of web applications
and is executed on the server, although it has now evolved into a general purpose scriptinglanguage
and is even being used to develop desktop applications.
This document provides an overview of the .NET platform and C# programming language. It discusses the limitations of previous programming models such as C/Windows API, C++/MFC, Visual Basic 6.0, Java/J2EE, and COM. It then introduces the key components of the .NET platform including the CLR, CTS, and CLS which address these limitations and provide language independence and interoperability. The document also summarizes features of the C# programming language and how it has evolved with new .NET releases.
Speech Application Language Tags(SALT) is an extension of HTML and other markup
languages (cHTML, XHTML, WML) which adds a spoken dialog interface to web applications,
for both voice only browsers (e.g. over the telephone) and multimodal browsers. It was
developed by – Microsoft, Cisco, SpeechWorks, Philips, Comverse and Intel. The SALT
specifications developed by the SALT forum http://www.saltforum.org were later
contributed to the W3C (http:// www.w3.org).
The major scenarios of the SALT are Voice- Only Browsers and Multimodal Browsers.
For multimodal applications, SALT can be added to a visual page to support speech input
and/or output. This is a way to speech-enable individual HTML controls for ‘push-to-talk’
form-filling scenarios, or to add more complex mixed initiative capabilities if necessary.
The document discusses J2EE packaging and deployment. It describes the different types of J2EE modules like EJB modules, web modules, application client modules, and resource adapter modules. It explains how these modules are packaged in JAR, WAR, RAR and EAR files and the containment hierarchy. It also covers exporting and sharing projects between workspaces.
An Architectural approach towards designing i18n/l10n, globalization components in the Globalization Enterprise Platforms independent of technology. This provides a Best practices guide/pointers for Architects, designers, developers and QA folks. This is mapped to the use case based on Automotive customer for a global platform application.
C# (pronounced “see sharp” or “C Sharp”) is one of many .NET programming languages. It is object-oriented and allows you to build reusable components for a wide variety of application types Microsoft introduced C# on June 26th, 2000 and it became a v1.0 product on Feb 13th 2002
The document describes PDF open parameters that allow opening a PDF file via a URL or command line while also specifying actions like a named destination, page number, or comment to display. Supported parameters include nameddest, page, comment, and collab and can be used with Acrobat's core API functions or open command on Windows or Apple Events on Mac.
C# (pronounced “see sharp” or “C Sharp”) is one of many .NET programming languages. It is object-oriented and allows you to build reusable components for a wide variety of application types Microsoft introduced C# on June 26th, 2000 and it became a v1.0 product on Feb 13th 2002
This document discusses object-relational mapping (ORM) tools and LINQ (Language Integrated Query). It begins by explaining what an ORM is and why developers may or may not need one. It then introduces LINQ, describing how it allows queries against data sources to be written as first-class language constructs in C# using familiar operators and syntax. The document outlines the different types of data sources LINQ can query, including SQL databases, XML, and .NET collections. It provides examples of using LINQ to SQL and LINQ to XML. The document also discusses the differences between code-first and database-first approaches in Entity Framework and how to configure domain classes. Finally, it covers query syntax versus method syntax in
Thrift is a software library and code generation tool developed at Facebook to facilitate the development of efficient and scalable backend services across multiple programming languages. It defines a common data representation and service interface definition that can be used to generate code for easily building RPC clients and servers. The key components that Thrift addresses are common data types, an abstracted transport layer, a flexible protocol, and support for backwards compatible data evolution through versioning.
Code sets define mappings between character symbols and numeric codes. Code page conversion may be needed when the code sets used by an application and database differ. Conversion occurs on the receiving end, potentially causing data loss if characters cannot be represented. It is important to choose database code pages carefully upfront to avoid issues during operations.
The document discusses various technical issues related to developing and maintaining the IFRS-GP taxonomy, including versioning, modularization, architecture, translation, element search, accounting concepts, and extensions. It explores potential solutions such as providing a consistent taxonomy extension framework, addressing rounding errors, and convergence with other standards.
Professional Work Experience-Completed Projectsbillleigh
William C. Witkouski Jr. is an Associate AIA with over 25 years of experience in architectural design and project management. He has worked on over 100 school renovation and construction projects in Pennsylvania and Ohio, including numerous projects for the Pine Richland School District involving renovations, additions, and site improvements. His previous employment also includes experience with commercial, residential, healthcare, municipal, and retail projects.
Tecnova provides India entry strategy and setup services to multinational companies. It offers a comprehensive portfolio of services across three phases - Planning, Project Execution, and Advisory. Tecnova has over 350 clients, primarily Fortune 1000 companies, and helps clients with market research, regulatory approvals, site selection, recruitment, and ongoing advisory support. It has over 170 consultants with expertise in various industry verticals.
PHP is a scripting language commonly used for web development. It supports both procedural and object-oriented programming. This document discusses techniques for modeling PHP code, including using structure charts to represent procedural code and UML class diagrams to represent object-oriented code. Modeling tools like MacA&D and WinA&D can generate code from these models and extract models from existing code to help organize and communicate the structure of PHP projects.
The document discusses domain-specific languages (DSLs) and the Eclipse Modeling Framework (EMF) Text tool. It provides an overview of DSLs and how EMFText can be used to define the concrete syntax and develop tools for textual DSLs. The presentation covers topics such as defining the meta-model and syntax, customizing code generation, and integrating DSLs with other Eclipse frameworks. EMFText is presented as a tool for easily defining textual syntax for Ecore meta-models and generating full-fledged Eclipse editors for working with DSL models.
.NET is a software framework developed by Microsoft that includes a runtime environment, class libraries and tools to develop various types of applications. The .NET Framework provides a common language runtime (CLR) that compiles code into an intermediate language and provides services like memory management and security. It also includes a base class library for developing Windows forms, web forms, web services and more using languages like C# and Visual Basic. .NET aims to provide a unified platform for developing desktop, web and mobile applications using common languages and libraries.
This document provides a case study on using CA ERwin Data Modeler (CA ERwin DM) and CA ERwin Model Manager (CA ERwin MM) across insurance industries. It discusses why these tools were chosen over other options, how strategic business elements like vision and goals impact data modeling. Key elements of the tools like opportunities/threats and capabilities are examined. The document also includes practical demonstrations of using the tools, including reverse engineering, comparing models, and integrating the tools. Appendices provide a SWOT analysis and sample data model.
Overlapping optimization with parsing through metagrammarsIAEME Publication
This document describes techniques for improving the performance of a meta framework developed by combining C++ and Java language segments. The meta framework identifies and parses source code containing C++ and Java statements using a metagrammar. Bytecodes are generated from the abstract syntax tree and optimized using techniques associated with the metagrammar, such as constant propagation. Constant propagation identifies constant values and replaces variables with those values to simplify expressions and reduce unnecessary computations. Other optimizations discussed include function inlining, exception handling, and eliminating unreachable code through constant folding. The goal is to develop an optimized meta framework that generates efficient bytecodes for hybrid C++ and Java source code.
The document discusses database application development and defines key concepts such as:
- Client/server architectures with two-tier and three-tier systems that partition application logic between clients and servers.
- Technologies for developing database-driven web applications including languages like HTML, XML, and frameworks like ASP.NET.
- Storing and querying XML documents using technologies like XML Schema, XPath, and XQuery.
Anvita Web Contentfor Indian Language 15mar2001guest6e7a1b1
The document discusses enabling Indian languages on the web. It covers the categorization of Indian languages into four types based on how words are formed by adding affixes and clitics. It describes standards for representing Indian language characters like ISCII and fonts standards. It discusses approaches for dynamic content creation and displaying Indian languages online using techniques like Unicode encoding, dynamic fonts using PFR/EOT formats, and ensuring compatibility across browsers. Case studies are also mentioned.
A basic primer for the i18n and l10n students and learner aspirants. Also captured Real time facts and practices which helps for the developers who build Global Enterprise Applications.
PHP is an interpreted programming language which was initially developed to enable the
creation of dynamic web pages. It is mainly used in the development of web applications
and is executed on the server, although it has now evolved into a general purpose scriptinglanguage
and is even being used to develop desktop applications.
This document provides an overview of the .NET platform and C# programming language. It discusses the limitations of previous programming models such as C/Windows API, C++/MFC, Visual Basic 6.0, Java/J2EE, and COM. It then introduces the key components of the .NET platform including the CLR, CTS, and CLS which address these limitations and provide language independence and interoperability. The document also summarizes features of the C# programming language and how it has evolved with new .NET releases.
Speech Application Language Tags(SALT) is an extension of HTML and other markup
languages (cHTML, XHTML, WML) which adds a spoken dialog interface to web applications,
for both voice only browsers (e.g. over the telephone) and multimodal browsers. It was
developed by – Microsoft, Cisco, SpeechWorks, Philips, Comverse and Intel. The SALT
specifications developed by the SALT forum http://www.saltforum.org were later
contributed to the W3C (http:// www.w3.org).
The major scenarios of the SALT are Voice- Only Browsers and Multimodal Browsers.
For multimodal applications, SALT can be added to a visual page to support speech input
and/or output. This is a way to speech-enable individual HTML controls for ‘push-to-talk’
form-filling scenarios, or to add more complex mixed initiative capabilities if necessary.
The document discusses J2EE packaging and deployment. It describes the different types of J2EE modules like EJB modules, web modules, application client modules, and resource adapter modules. It explains how these modules are packaged in JAR, WAR, RAR and EAR files and the containment hierarchy. It also covers exporting and sharing projects between workspaces.
An Architectural approach towards designing i18n/l10n, globalization components in the Globalization Enterprise Platforms independent of technology. This provides a Best practices guide/pointers for Architects, designers, developers and QA folks. This is mapped to the use case based on Automotive customer for a global platform application.
C# (pronounced “see sharp” or “C Sharp”) is one of many .NET programming languages. It is object-oriented and allows you to build reusable components for a wide variety of application types Microsoft introduced C# on June 26th, 2000 and it became a v1.0 product on Feb 13th 2002
The document describes PDF open parameters that allow opening a PDF file via a URL or command line while also specifying actions like a named destination, page number, or comment to display. Supported parameters include nameddest, page, comment, and collab and can be used with Acrobat's core API functions or open command on Windows or Apple Events on Mac.
C# (pronounced “see sharp” or “C Sharp”) is one of many .NET programming languages. It is object-oriented and allows you to build reusable components for a wide variety of application types Microsoft introduced C# on June 26th, 2000 and it became a v1.0 product on Feb 13th 2002
This document discusses object-relational mapping (ORM) tools and LINQ (Language Integrated Query). It begins by explaining what an ORM is and why developers may or may not need one. It then introduces LINQ, describing how it allows queries against data sources to be written as first-class language constructs in C# using familiar operators and syntax. The document outlines the different types of data sources LINQ can query, including SQL databases, XML, and .NET collections. It provides examples of using LINQ to SQL and LINQ to XML. The document also discusses the differences between code-first and database-first approaches in Entity Framework and how to configure domain classes. Finally, it covers query syntax versus method syntax in
Thrift is a software library and code generation tool developed at Facebook to facilitate the development of efficient and scalable backend services across multiple programming languages. It defines a common data representation and service interface definition that can be used to generate code for easily building RPC clients and servers. The key components that Thrift addresses are common data types, an abstracted transport layer, a flexible protocol, and support for backwards compatible data evolution through versioning.
Code sets define mappings between character symbols and numeric codes. Code page conversion may be needed when the code sets used by an application and database differ. Conversion occurs on the receiving end, potentially causing data loss if characters cannot be represented. It is important to choose database code pages carefully upfront to avoid issues during operations.
The document discusses various technical issues related to developing and maintaining the IFRS-GP taxonomy, including versioning, modularization, architecture, translation, element search, accounting concepts, and extensions. It explores potential solutions such as providing a consistent taxonomy extension framework, addressing rounding errors, and convergence with other standards.
Professional Work Experience-Completed Projectsbillleigh
William C. Witkouski Jr. is an Associate AIA with over 25 years of experience in architectural design and project management. He has worked on over 100 school renovation and construction projects in Pennsylvania and Ohio, including numerous projects for the Pine Richland School District involving renovations, additions, and site improvements. His previous employment also includes experience with commercial, residential, healthcare, municipal, and retail projects.
Tecnova provides India entry strategy and setup services to multinational companies. It offers a comprehensive portfolio of services across three phases - Planning, Project Execution, and Advisory. Tecnova has over 350 clients, primarily Fortune 1000 companies, and helps clients with market research, regulatory approvals, site selection, recruitment, and ongoing advisory support. It has over 170 consultants with expertise in various industry verticals.
This document provides tips for networking introductions. It recommends introducing yourself with your name, occupation, areas of expertise, successes, and brief work history. The document also suggests asking what opportunities the other person may have and tailoring your introduction to 30 seconds, 1 minute, or 2 minutes depending on the situation. The key is to focus the introduction on how you can help the other person rather than just promoting yourself.
The document provides an analysis of the VFX and animation industry in India. It discusses the following key points:
1) The industry is highly competitive with low barriers to entry due to low costs and availability of pirated software. This has led to overcapacity.
2) Porter's 5 forces analysis shows high threat of new entrants and product substitutes, as well as high bargaining power of buyers.
3) The industry is largely unorganized with many small, artist-driven shops that are poorly managed and often underbid competitors, exerting downward pressure on prices.
How to move beyond the touch screen for a better accessibility of mobile and ...Fabien Marry
Slides from the presentation I gave at the User Experience Professional Association UK (UXPA-UK) for their Global Accessibility Awareness day.
A video of the presentation is available on youtube: http://www.youtube.com/watch?v=icbc6ANF3uA#t=2m40s
More info at http://uxpa-uk.org/events/may-event-global-accessibility-awareness-day-gaad/.
Full Engagement Leadership: Matt Walker's Five Elements of AdventureMatt Walker
Matt Walker teaches leaders how he transfers the lessons learned from climbing the world’s highest mountains to foster an adventure mindset that seeks challenge, innovation, and excellence. This isn’t leadership theory. This is Matt’s direct experience as a mountain guide on the highest mountains in the world coupled with his background as a Behavioral Scientist to offer immediate and tangible leadership skills and application.
The Five Elements of Adventure are the framework from which summit success and full engagement leadership are built.
This is a presentation I gave at the University of Riverside, * Edward J. Blakely Center for Sustainable Suburban Development, Randall E. Lewis Seminar Series.
Reviewing information for tests requires continually looking over notes and lessons to commit information to long-term memory. It is important to organize review materials and schedule review sessions. When reviewing, focus on understanding major ideas and connections, as well as unfamiliar topics. Create questions from notes and predict test questions to improve understanding and prepare for exams. Reviewing systematically and repeating important information over multiple sessions helps commit material to memory.
J'aime le Minitel ! - Lessons from France's internet ancestor for today's de...Fabien Marry
In the early eighties, the French government launched MINITEL, a system of connected terminals for consumer home use. While extremely limited technologically by today's standards, it enabled mainstream access to online directories, chats, stores, email and banking more than a decade before the web became widespread. We will look at what interacting with this system was like, why it stayed popular long after the web existed, and the many lessons it holds for today's designers.
Presentation given to the Interaction Design Association (IxDA) in London on September 25, 2013
The document discusses analyzing audiences to effectively communicate messages. It notes that wise speakers will research factors like age, gender, knowledge, occupation, ethnicity, socioeconomic background, and religion of their audience. These demographic factors can help determine topics, terminology, and approaches that will appeal to and be understood by the intended listeners. The goal is to find common ground and speak to audiences at a level they can comprehend while avoiding stereotypes or offensive language.
The document discusses principles of influence and how to drive attitude change. It lists nine principles of influence: commitment and consistency, reciprocation, social proof, commonality, authority, choice, attribution, scarcity, and inoculation. It notes that systematic arguments lead to longer resistance but stronger predictions, while heuristic cues lead to shorter resistance but weaker predictions. It asks questions about examples of these principles in marketing, how the principles could be used with products or oneself as the product, and how ethics relate to the principles of influence.
Analysis Of B To G Business Opportunities In Maharashtra StateSumit Kumtha
This document provides an analysis of business opportunities for Business to Government sales in Maharashtra State, India. It outlines that Maharashtra has a large government sector spending of over $24 billion annually, spread across various state departments, public sector undertakings, and local governing bodies like municipal corporations. Some key markets within the government sector include the 31 state departments, over 60 public sector undertakings, 33 zilla parishads (district councils), and over 200 municipal councils. The document segments and lists these various entities to help identify sales opportunities.
Why the iPad UI matters, And how it differs from the Tablet PC, but also from...Fabien Marry
A in-depth look at the iPad user interface with guidelines and examples.
What's new, and what lessons were learned from theTablet PC concept and the iPhone own user interface.
If you think the iPad is just a bigger iPod, this presentation is for you.
Slightly updated from the presentation I made at UXCampLondon 2010.
Hey, these are the slides me n my friends made... Use them if u want to... for viewing the videos used click on the links given ahead.
http://www.youtube.com/watch?v=jzOti_MtmBk
http://www.youtube.com/watch?v=N9MARqmqSf4
http://www.youtube.com/watch?v=yokcKhqq48c
http://www.youtube.com/watch?v=rJZVFRJmc9M
Zaiyang Li discusses the technology stack for a project, including the front-end framework Angular and build tools like Webpack, and the back-end framework ASP.NET Core with libraries like Dapper and testing tools like Xunit and Moq. Chart.js is used for data visualization, and a bespoke event sourcing framework is in active development to run in the same process as the web server. Protocol buffers are used for serialization and provide benefits like high performance and backward compatibility.
Here are the key advantages and disadvantages of service-oriented architecture (SOA):
Advantages:
- Loose coupling: Services can easily be modified or replaced without affecting other services. This improves flexibility and maintainability.
- Reusability: Services can be reused in different applications, reducing development time and costs.
- Scalability: It's easier to increase or decrease capacity by adding/removing services as needs change.
- Interoperability: Services use standards-based interfaces, making it easier for different systems to communicate.
Disadvantages:
- Complexity: SOA introduces additional layers of abstraction and complexity in architecture, development, and management.
- Performance overhead: Additional processing is required for service abstraction
Doppl is a new programming language being developed that aims to provide natural syntax for parallel programming. The language is focused on shared memory applications and message passing between tasks. This first development diary outlines the goals of the language, which include allowing programmers to model algorithms as state machines and represent data as attribute arrays to improve cache performance. Future iterations will explore additional features like loop structures and type systems.
STATICMOCK : A Mock Object Framework for Compiled Languages ijseajournal
Mock object frameworks are very useful for creating unit tests. However, purely compiled languages lack robust frameworks for mock objects. The frameworks that do exist rely on inheritance, compiler directives, or linker manipulation. Such techniques limit the applicability of the existing frameworks, especially when
dealing with legacy code.
We present a tool, StaticMock, for creating mock objects in compiled languages. This tool uses source-tosource
compilation together with Aspect Oriented Programming to deliver a unique solution that does not rely on the previous, commonly used techniques. We evaluate the compile-time and run-time overhead incurred by this tool, and we demonstrate the effectiveness of the tool by showing that it can be applied to
new and existing code
Building nTier Applications with Entity Framework Services (Part 1)David McCarter
Learn how to build real world nTier applications with the new Entity Framework and related services. With this new technology built into .NET, you can easily wrap an object model around your database and have all the data access automatically generated or use your own stored procedures and views. The session will demonstrate how to create and consume these new technologies from the ground up and focus on database modeling including views and stored procedures along with coding against the model via LINQ. Dynamic data website will also be demonstrated.
Dedicated and resolute C# Software Developer/Programmer with experience using object oriented design techniques and programming languages, including Microsoft .NET Technologies.
Building nTier Applications with Entity Framework Services (Part 1)David McCarter
Learn how to build real world nTier applications with the new Entity Framework and related services. With this new technology built into .NET, you can easily wrap an object model around your database and have all the data access automatically generated or use your own stored procedures and views. The session will demonstrate how to create and consume these new technologies from the ground up and focus on database modeling including views and stored procedures along with coding against the model via LINQ. Dynamic data website will also be demonstrated. Lots of code! Make sure to attend Part 2.
This document presents information on the MERN stack and how it can be used to build a Twitter clone application. It defines each component of the MERN stack: MongoDB for the database, ExpressJS for the backend framework, ReactJS for the frontend framework, and NodeJS as the runtime environment. It explains that MongoDB is a flexible NoSQL database, ExpressJS simplifies backend coding in NodeJS, ReactJS allows building user interfaces with JavaScript, and NodeJS enables running JavaScript on the server. The document outlines the main benefits of using the MERN stack, such as having a single coding language across front- and backend and the ability to build dynamic web apps quickly. It concludes by describing how to start the server and client for
Siva Kumar S G has over 8 years of experience designing and developing Java/J2EE applications. He has expertise in technologies like Spring, Struts, Hibernate, JPA, JMS, Web Services, and RESTful services. He has worked extensively on projects involving content management systems, SOA, and integrating applications using BPEL and web services. Siva Kumar currently works as a Java Technical Architect for Daimler Trucks on their online warranty application.
A Program Transformation Technique to Support Aspect-Oriented Programming wit...Sabrina Ball
This document proposes a technique for applying aspect-oriented programming to C++ templates using program transformation. It discusses the challenges of combining aspects with templates, as templates can be instantiated in multiple places but an aspect may only be desired for a subset. The technique uses a source-to-source preprocessor and program transformation system to weave advice into template implementations. It presents an example applying the technique to a scientific computing library to modularize crosscutting concerns in template-based code.
Salesforce Auckland Developer Meetup - May 2018 - Lightning Web Components Ben Edwards
Tiaan Swart from Deloitte NZ presentation on everything you need to know how Lightning Web Components! With a real working code sample and demonstrations, as well as discussing how to migration from Lightning Components
Dita for the web: Make Adaptive Content Simple for Writers and DeveloperDon Day
Lavacon 2013, Portland, Oregon
On the challenges of implementing structured, in-browser editing environements for creating adaptive content for the Web.
Exploiting Layout and Content
Don Day, Contelligence Group
.NET is designed to solve problems that have plagued programmers in the past like incompatibilities between programming languages and technologies. It provides a common language runtime and type system that allows different languages to work together. The .NET Framework handles many common programming tasks like serialization automatically through metadata and provides a large class library for common functions.
This document provides an introduction and overview of Entity Framework. It discusses what Entity Framework is, how it can eliminate data access code and allow developers to focus on business logic. The document demonstrates a sample Entity Framework application and compares it to other data access technologies. It also explains how Entity Framework integrates with .NET applications and supports n-tier architectures through the use of POCO entities and proxies.
ESWC2008 Relational2RDF - Mapping Relational Databases to RDF with OpenLink V...rumito
The document discusses mapping relational databases to RDF with Virtuoso mapping software. It outlines the benefits of mapping such as unified querying across data sources and leveraging existing high performance relational databases. It also describes some challenges like keeping mapped data consistent. The document then provides details on how Virtuoso mapping software works, examples of complex mappings, and use cases where mapping has been applied.
This document provides an overview of HTML5, Backbone.js, and web development. It introduces key concepts like client-server architecture, APIs, databases, markup languages, and frameworks like jQuery, Bootstrap, and Backbone. It discusses modern front-end development practices and server-side programming. Mobile web development options like native, hybrid, and PhoneGap are also covered. The document emphasizes learning resources and stresses attention to details, user experience, and adaptability to new technologies in the field.
Katalon Studio - Successful Test Automation for both Testers and DevelopersKatalon Studio
There is a "great divide" between Developers' and Testers' disciplines, which leads to silo'ed test automation approaches with either inefficient or ineffective result. In this presentation, I introduce Katalon Studio, a free test automation IDE, as an attempt to help our developers and testers collaborate together towards a more reliable and robust test automation implementation.
Original source: https://www.slideshare.net/minhhai2209/successful-test-automation-for-both-testers-and-developers-75417401
The document discusses the .NET platform and framework. It provides an overview of the key components of .NET including the Common Language Runtime (CLR) environment that executes programs, the Framework Class Library (FCL) base classes and libraries, and support for multiple programming languages. It also describes concepts like application domains, marshaling objects across boundaries, and how programs are compiled to Microsoft Intermediate Language (MSIL) and executed.
ModelTalk - When Everything is a Domain Specific LanguageAtzmon Hen-Tov
- ModelTalk is a model-driven software development framework that supports domain-specific languages (DSLs) pervasively at the core of the development process.
- In ModelTalk, systems are implemented primarily using declarative DSL code, with some localized Java code for behavior. The DSL code governs the Java code.
- ModelTalk uses three principles for DSL development at scale: textual DSLs, an integrated IDE for DSL and Java development, and an interpretive approach where DSL code does not need to be transformed to Java.
ModelTalk - When Everything is a Domain Specific Language
I18n
1. Web Application Internationalization
and Localization in Action
Terence Parr
University of San Francisco
parrt@cs.usfca.edu
ABSTRACT model) and presentation elements (the view). Preserving the
A template engine that strictly enforces model-view separa- principle of single-point-of-change is an absolute necessity
tion has been shown to be at least as expressive as a context for maintaining large web applications. Yet pressure exists
free grammar allowing the engine to, for example, easily in normal development to cut-and-paste logic and HTML
generate any file describable by an XML DTD [7]. When templates, rather than properly factoring them, to get a job
faced with supporting internationalized web applications, done quickly before a deadline. Cut-and-paste is particu-
however, template engine designers have backed off from larly deadly when using presentation layers like Java server
enforcing strict separation, allowing unrestricted embedded pages (JSP) and Active Server Pages (ASP) or any other
code segments because it was unclear how localization could Turing complete template engine because such presentation
otherwise occur. The consequence, unfortunately, is that layers encourage entanglement of model and view–embedded
each reference to a localized data value, such as a date or expressions are unrestricted code fragments. Any copying of
monetary value, replicates essentially the same snippet of a presentation element then necessarily duplicates any em-
code thousands of times across hundreds of templates for bedded logic as well.
a large site. The potential for cut-and-paste induced bugs Localization, adapting an application for a particular lo-
and the duplication of code proves a maintenance nightmare. cale, further increases pressure to duplicate program ele-
Moreover, page designers are ill-equipped to deal with code ments because proper infrastructure (internationalization)
fragments. But the difficult question remains: How can has not been generally available to factor out the presen-
localization be done without allowing unrestricted embed- tation text from the HTML layout tags in a template file.
ded code segments that open the door to model-view entan- Often developers will duplicate all the HTML template files,
glement? The answer is simply to automate the localiza- with a complete set of files for each supported language.
tion of data values, thus, avoiding code duplication, making Changing the look of the site afterwards means changing
it easier on the developer and designer, and reducing op- n ∗ f files for n languages and f files. If language require-
portunities for the introduction of bugs–all-the-while main- ments actually force different designs for certain pages, the
taining the sanctity of strict model-view separation. This unchanged pages should still not be replicated just to yield
paper describes how the ST (StringTemplate) template en- the complete set of pages.
gine strictly enforces model-view separation while handily Localizing entities like dates and integers per locale fur-
supporting internationalized web application architectures. ther complicates the situation by requiring different formats
Demonstrations of page text localization, locale-specific site for some of the dynamically generated data values even when
designs, and automatic data localization are provided. the presentation text strings remain the same. “10/01/06”
means “October 1, 2006” in the US but “January 10, 2006”
in the UK even though the surrounding presentation lan-
Categories and Subject Descriptors guage is the same. Rendering entities in different formats
D.2.11 [Software Engineering]: Software Architectures— provides an excuse for developers to embed the same code
Domain-specific architectures, Patterns, Languages; D.1.1 repeatedly in their templates to invoke the appropriate for-
[Programming Techniques]: Applicative (Functional) Pro- matter invocation code, again breaking the single-point-of-
gramming change principle. Instead, entities should be clearly identi-
fied as dates, integers, or monetary values and then auto-
Keywords matically rendered according to locale.
One final problem related to localization involves the tech-
Internationalization, Localization, Template engines, Web nical sophistication of the page designers and language trans-
applications, Model-View-Controller lators. Even graphics designers find it difficult sometimes
to deal with highly-factored or otherwise complicated tem-
1. INTRODUCTION plates. Translators typically have no technical background
One of the most challenging issues facing web application and wading through HTML looking for text to translate
developers is preventing duplication of business logic (the can lead to errors and, worse, inadvertent changes to the
formatting or embedded expressions. Both designers and
Copyright is held by the author/owner(s).
translators will have difficulty with anything beyond the
ICWE’06, July 11-14, 2006, Palo Alto, California, USA. simplest data reference expressions. This is another rea-
ACM 1-59593-352-2/06/0007.
2. son that the text presentation strings should be separated All of these solutions can pull strings from property files,
from the HTML formatting and that localized template data resource bundles, data bases, and so on. The simplest way
references should not be arbitrary code fragments. to switch strings tables per locale is to encode the locale in
Supporting localization for dynamic web pages means then a properties filename, language.properties, and then load
that an internationalized architecture must: the appropriate file according to Locale’s getLanguage()
method. Property files are simple key-value pairs. For ex-
1. treat text as a resource, separate from the HTML, that ample, an English property file, en.properties would have
is easily accessible to a translator
title=Welcome to my test page
2. allow groups of templates to be treated as a unit to
support different page designs for different locales
whereas a fr.properties file would have
3. automatically render entities, such as numeric and mon-
etary values, according to locale title=Bienvenue ` ma page de test
a
StringTemplate (or ST as it is abbreviated), the subject The page name can be encoded in the property name or
of this paper, is a Java-based template engine (with ports a new property file can be used for each page in order to
to C# and Python) that strongly encourages developers handle strings for multiple pages.
to avoid HTML and code duplication during localization To demonstrate how a site can use ST to separate and edit
by providing a simple, flexible, and powerful infrastructure strings, consider SchoolLoop.com’s administration view of a
satisfying these requirements. This engine also strictly en- teacher’s course managment page shown in Figure 1. The
forces model-view separation [7], which requires that all logic “+” buttons indicate all the strings that the designer or
and computations be done in the model rather than repli- translator can edit live on the site. Each supported lan-
cated around the templates in fragments. The techniques guage (currently English and Spanish) has a collection of
described here work well in practice for real sites. For ex- strings stored in a database and cached in memory as an
ample, SchoolLoop.com uses ST to flip between English and object implementing the Map interface. References within
Spanish with a single click. Exactly one template exists per the templates look like the following.
page and all strings are pulled from a database.
This paper illustrates simple mechanisms for separating $strings.teacher_office_todo_title$
language specific text strings from page designs (section
2), supporting locale-sensitive site designs through template where strings is the attribute name associated with the
groups and group inheritance (section 3), and for automat- cache object.
ically rendering data values according to locale (section 4). Clicking on a “+” button brings up the string edit view
as shown in Figure 2. The designer or translator may alter
the text string and refer to attributes, defined by the page
2. LOCALIZING PAGE TEXT controller, such as ins name and first name.
An internationalized web application must treat text and On the surface, just about all template engines appear
image names (for images with embedded text) as dynami- to provide a satisfactory solution, but in practice any imple-
cally generated data just like it treats actual data elements mentation built with an unrestricted template engine quickly
like monetary values so that translators can work in isola- degrades into a fully entangled model and view. In other
tion from the web application and HTML page templates. words, more and more code will creep into the template
On this most developers agree. Google’s “Language Con- files causing code duplication and other maintenance prob-
sole”, that has been used to provide the requisite Klingon lems. Because ST strictly enforces model-view separation,
locale among others, is a prime example. Differences arise, developers are forced to keep the two concerns separated.
however, in how templates refer to these strings. Unless restricted, a template can readily alter the model,
For the most part, developer trade articles [8][5] recom- thus, making the template part of the model. For example,
mend a disciplined approach to inserting localized strings the developer could inadvertently remove instead of get the
such as the following JSP snippet title, which might arise from an overzealous string search
and replace operation or even from a designer’s lack of pro-
<title><%=session.getValue("title")%></title> gramming skill:
where embedded Java code (not listed) inserts strings into <title>$strings.remove("title")</title>
the session variables. Here is the equivalent JSTL (JSP
Standard Tag Library) solution: Any subsequent pages would generate null or blank titles.
Designers do not understand program “state” nor code and
<title><fmt:message key="title"/></title> expecting them to deal with unrestricted template expres-
sions is unrealistic and makes an application vulnerable to
The Velocity template engine [10] allows a tidier solution
the introduction of random bugs.
<title>$strings.get("title")</title> Another relevant weakness of other template engines is
that the various translated strings are just that: strings
where strings is an object in the model implementing the not templates. ST evaluates all expressions lazily implying
Map interface. ST has a similar, though more direct syntax that expressions within templates are not evaluated until
for accessing strings in a Map: the entire page has been constructed. Other template en-
gine would have to invoke themselves explicitly and recur-
<title>$strings.title$</title> sively on the incoming strings to evaluate them as templates,
4. increasing template complexity and again forcing code repli- StringTemplate testPageST =
cation across all templates. Without lazy evaluation, it is templates.getInstanceOf("test");
unclear an engine could process expressions embedded in testPageST.setAttribute("username", ...);
translated strings without computing the values too early. ...
ST, in contrast, naturally deals with the following property
strings: and then invokes testPageST.toString() to render the tem-
plate to plain text for transmission to the user’s browser.
title=Welcome to $username$’s test page ST’s group inheritance mechanism is dynamic in that new
group hierarchies may be defined at run-time. Defining a
and template subgroup involves creating a new directory to hold
subgroup templates, creating a new StringTemplateGroup
title=Bienvenue sur la page de test de $username$ instance attached to that directory, and finally setting the
new group’s supergroup to an existing group.
References to $strings.title$ would evaluate the em- For example, if the test page design for the French locale
bedded $username$ expressions at the last possible moment, requires a new design, but all the other page designs stay
after the page controller had injected all data values (called the same, the developer would create a new directory called
attributes) for the surrounding template. Templates inherit “fr” and place the new page design template inside with
all attribute values from their enclosing templates. After the same template file name as before. The following code
the title template is inserted, it has access to all page at- fragment creates a subgroup that inherits all templates from
tributes. This mechanism assumes that the object imple- the English group except for the test page, which would
menting the Map interface called strings instantiates the be overridden in the French group. No template or code
title properties as ST objects not String objects. duplication would occur.
By providing an internationalized architecture as described
in this section, translators may create strings for various lan- StringTemplateGroup english =
guages without forcing replication of code or HTML page new StringTemplateGroup("en", root+"en");
templates. In some cases, however, the locale is so different StringTemplateGroup french =
that merely changing the text strings is insufficient–locales new StringTemplateGroup("fr", root+"fr");
may require their own full or partial site designs. french.setSuperGroup(english);
...
3. SITE DESIGN PER LOCALE // set according to locale; I explicitly set here
StringTemplate templates = french;
Web applications easily deal with multiple site designs,
albeit often by simply copying the directory full of template Later references to templates.getInstanceOf("test") load
files and altering to suit. But what if the site design is almost templates from the appropriate group depending on which
identical and you just need to alter a few page design such group templates pointed to. Changing site design per locale
as for a premium and non-premium version of the same site? then is simply a matter of flipping a pointer.
Germane to this discussion, how can you provide multiple One final detail is worth mentioning, that of file charac-
designs for a single page to deal with various locales without ter encoding. Presentation files will most likely need differ-
duplicating your entire site for each locale? For example, if ent character encodings than ASCII, such as ISO-8859-1 or
the text direction changes to right-to-left from left-to-right, UTF-8. Developers set the template character encoding for
the page layout might have to change. a StringTemplateGroup via a simple method before tem-
ST supports template group inheritance so that templates plate instances are loaded from disk; e.g.,
not found in one group may be inherited from a supergroup.
Just as in object-oriented programming where new objects french.setFileCharEncoding("ISO8859_1");
may be defined as they differ from existing objects, new
template groups may be defined as they differ from exist- ST supports internationalization through simple mech-
ing template groups. In this way locales requiring special anisms for separating text strings from HTML templates
designs do not force the replication of unaltered templates. and by allowing new groups of templates to be defined as
Only those pages that are different need be specified. they differ from previous groups. Both of these mechanism
A simple example illustrates the mechanics. An object prevent unnecessary template and code duplication, but do
called StringTemplateGroup represents a group of templates not solve the final and most challenging problem of locale-
stored in a particular directory. The following code fragment sensitive data formatting.
creates a group rooted at “/var/data/templates/language”
where language would be en, fr, etc...
4. LOCALIZATION OF DATA VALUES
Locale locale = Locale.getDefault(); Many different data values in an application need to be
String language = locale.getLanguage(); formatted according to locale such as numbers, dates, mone-
String root = "/var/data/templates/"; tary values, and percentages. Some applications use a brute
StringTemplateGroup templates = force approach by directly invoking formatting objects that
new StringTemplateGroup(language, root+language); are sensitive to locale in expressions embedded within tem-
plates. Here is an example using a Velocity DateTool object
The page controller responsible for generating a page ul- stored in a variable called date:
timately invokes the getInstanceOf() method to get an in-
stance of a template from a group: Sold on $date.format(’medium’,$myDate).
5. This is rather verbose considering many date references NumberFormat.getIntegerInstance();
will have the same format and, more importantly, this snip- return nf.format(value.intValue());
pet will be difficult for designers to deal with. Even at the }
most basic level, an issue will be: When does the expres- }
sion stop and HTML begin again? Using StringTemplate
the designer would simply reference $myDate$ where the “$” After the developer has registered the renderer with a
characters clearly bracket every expression and defers locale group:
issues to ST. templates.registerRenderer(
The formatting of integer values makes this matter even Integer.class,
more clear. A simple reference to a data value of type new IntegerRenderer());
Integer such as $n$ yields the string computed from invok-
ing Integer’s toString() method rather than a localized any template instances created from that group will format
string in most template engines. FreeMarker [3] does allow Integer objects via IntegerRenderer’s toString() method.
the developer to set a global number format, but beyond the What if, as a special case, a number must be formatted
common types there is no general mechanism for specifying in binary (“101”) rather than decimal (“5”)? In this case,
formatting for arbitrary types. the easiest thing to do is to wrap the Integer attribute in
ST introduces an extremely simple and general mecha- an object whose toString() method does the appropriate
nism to format arbitrary data values, one that does not re- conversion to binary digits:
quire designers to alter templates when internationalizing an
Integer bits = 5;
application nor requires them to be programmers. The goal
StringTemplate st = templates.getInstanceOf("test");
is to allow both single-language sites and internationalized
// $mask$ will render in binary
sites to use $n$ and $myDate$ instead of code fragments.
st.setAttribute("mask", new BinaryWrapper(bits));
This solution relies on ST’s restricted interface between
model and view. In a web application based upon ST, the The controller must, in a sense, “paint” the object with a
page controller pulls data from the model and injects at- new coat of paint for this special case, but it is better than
tributes into templates, which render objects to string via asking the nonprogrammer designer to write:
the toString() method. The only code execution initiated
by a template is the implicit invocation of toString() meth- $numbers.binaryFormat($mask)
ods during evaluation. For example, the following code frag- In the view of ST, the programmer provides the set all
ment sets the n attribute for an instance of the test tem- possible data values and the designer chooses from among
plate. them just like a library provides an API for programmers.
This seemingly rigid strategy is necessary not only to enforce
StringTemplate testPageST = strict separation of model and view but also to deal with the
templates.getInstanceOf("test"); realities of a designer’s skill set.
testPageST.setAttribute("n", new Integer(3)); What happens when the designer needs dates to be some-
times long and sometimes short format? This case is also
References to $n$ in a template are evaluated by calling
easily handled without resorting to unrestricted code in the
toString() on the Integer object associated with n in the
template and without burdening the programmer with the
attribute table for that template.
extra code needed to wrap all date attributes. The Date
The collection of all toString() methods can be viewed as
class can be subclassed to provide property methods such
the renderer component of a design pattern more complete
as getMedium() so that templates may reference $myDate$
than MVC: MVCR (model-view-controller-renderer) [7]. A
to get the default rendering and $myDate.medium$ to get
template knows to format n as a locale-sensitive number if
a medium format. For any given type, the developer may
an attribute renderer for the Integer class type exists. The
automatically provide augmented properties without hav-
developer may register renderers per template group or per
ing to manually create instances of a Date subclass. The
template instance. If a template does not have a renderer
setAttribute() method of the ST class can be overridden
for a type, the associated group is consulted. If no renderer
to trap and automatically wrap objects of a particular type
is registered for the group, its supergroup is consulted. A
to provide new properties:
renderer is any object that satisfies the AttributeRenderer
interface: class MyStringTemplate extends StringTemplate {
public void setAttribute(String name, Object v) {
public interface AttributeRenderer { if ( v instanceof Date ) {
public String toString(Object o); v = new DateWrapper(v); // adds medium, ...
} }
super.setAttribute(name, v);
Here is a simple example of a renderer that formats inte- }
gers according to locale. }
public class IntegerRenderer To create MyStringTemplate objects rather than the de-
implements AttributeRenderer fault, the template group factory createStringTemplate()
{ method is overridden. All attribute references to objects of
public String toString(Object o) { type Date will support the added properties automatically
Integer value = (Integer)o; without burdening the application programmer and without
NumberFormat nf = expecting the designer to be a programmer.
6. Date d = db.getUserLastLogin(id); A literature search reveals little activity from academics
// d is automatically wrapped by setAttribute concerning internationalization and localization (particularly
// designer references $lastLogin$ or of web applications), probably because it is a question of en-
// $lastLogin.medium$, ... gineering not pure research. The available papers tend to
st.setAttribute("lastLogin", d); describe the general requirements and strategies for build-
ing multi-lingual applications [11] or the very need for in-
This strategy also works nicely for Integers so that $n$, ternationalization [1]. Some focus primarily on the design
$n.binary$, and $n.currency$ are available to designers. methodology [9].
In summary, localizing data values for a dynamic web
site should involve changes in the plumbing rather than 6. CONCLUSIONS
additions of code in the template. Moreover, most of this
plumbing can be automated to reduce the load on program- With few exceptions such as XMLC [2], engine designers
mers. Attribute references should be simple like name or have unrealistic expectations of programmer discipline. All
name.property because that is what designers understand provide Turing complete unrestricted embedded template
and also because it prevents identical code snippets from languages thereby repeating the mistakes of JSP except with
being replicated thousands of times across hundreds of tem- a new programming language to learn. New designs or par-
plates. The MVCR pattern, espoused by ST, is completely tial designs often require replication of the embedded code
general and is easily understood by the average programmer. fragments and, therefore, code changes require modifications
to all versions of the same page.
Designers are not programmers and have trouble under-
5. RELATED WORK standing how a table is generated with a for-loop and just
A few engines are making progress towards automatically generally have issues finding and properly altering HTML
dealing with the localization of data values. FreeMarker [3] entangled with code. From my experience building sites
can automatically format numeric and time related values such as jGuru.com and antlr.org, it is clear designers can
by locale. MonoRail [6] has “filters” that appear to auto- deal with only the simplest template expressions. To collab-
matically format dates. Both tools do not appear to allow orate and to work in parallel, designers must have templates
general type-to-renderer mappings. Other tools require the with restricted expressions.
programmer to write a code fragment for each localized data Internationalized architectures make matters worse. Ref-
reference. erences to “strings.get("title")” used to separate text
Most engines provide a mechanism to pull out text strings strings from HTML are not suitable for designers. Even the
for translation, but do not provide formalisms such as tem- JSTL tags like
plate groups to deal with multiple site look-and-feels. The
<fmt:message key="title"/>
template groups of ST appears unique in their ability to nat-
urally flip between template groups and to support partial are a problem because most designer cannot competently
designs that derive from other designs via group inheritance build HTML by hand, meaning these tags are definitely too
and template polymorphism. much. One can question how engine designers expect the
After reviewing a draft of this paper, German developer majority of page designers to work with their templates.
Kay Roepke related his experiences building two interna- ST’s distinguishes itself by strictly enforcing model-view
tionalized web sites: mobile.de (an eBay company special- separation via template expressions that are restricted syn-
izing in new and used vehicle sales) and openBC.com (an tactically and semantically. Other engines have rejected
online professional networking management site for Europe such draconian measures for fear of emasculating template
and Asia). At mobile.de, the developers built a company- power. The ability to specify locale-specific data value for-
specific system very similar to ST that had very restricted mats is one such area of concern. The primary contribution
template expressions. Ultimately, this system proved to be of this paper is to show that not only can a restricted tem-
a performance problem mostly due to its Perl-based imple- plate engine support internationalized architectures, but it
mentation. To avoid such performance problems in his next can do so automatically thereby reducing the burden on de-
position at openBC.com, a simpler, but faster system was velopers and HTML designers alike.
used. Unfortunately, the second system did not automati- Oddly enough, sticking to the principle of strict separa-
cally handle localized data–data was formatted in the con- tion requires a solution to localizing data values that is sim-
troller and pushed into the templates. pler, more flexible, and more powerful than existing solu-
Roepke corroborates the suppositions and conclusions of tions. Other engines are Turing complete and can mimic
this paper: ST’s strategy, which I implore them to do, but they cannot
overcome the fundamental weakness of not enforcing model-
I concur with your conclusion, that the funda- view separation. That weakness leads to code creeping into
mental problem is the support for expressions templates ultimately leading to code and HTML replication
within templates. This quickly leads to two things: and also to HTML templates with which designers cannot
1. unmaintainable applications due to lack of work.
single-point-of-change in code ST is available under the BSD license from
2. most syntactic [template expression] conven- http://www.stringtemplate.org.
tions either make the use of dedicated HTML
editors impossible or are unintelligible to 7. ACKNOWLEDGMENTS
the average designer. I have seen horrible I would like to thank Anton Keks for suggesting the type
things happen to templates which have been to renderer object mapping and Thomas Aigner for pointing
in the hands of designers and/or translators. out the character encoding problem and workable solution.
7. 8. REFERENCES
[1] How We Made the Web Site International and
Accessible: A Case Study. Maria Gabriela Alvarez,
Leonard R. Kasday, and Steven Todd 4th Conference
on Human Factors & the Web. June 1998.
[2] Enhydra. XMLC.
http://xmlc.enhydra.org/project/aboutProject/index.html
[3] FreeMarker. http://freemarker.sourceforge.net.
[4] JSP. http://java.sun.com/products/jsp.
[5] Sing Li. Create internationalize JSP applications.
http://www-128.ibm.com/developerworks/java/library/j-jspapp
March 2005.
[6] MonoRail
http://www.castleproject.org/index.php/MonoRail
[7] Terence Parr. Enforcing Strict Model-View Separation
in Template Engines. In WWW2004 Conference
Proceedings p. 224, May 17-20 2004, New York City.
[8] Govind Seshadri. Internationalize JSP-based Websites.
http://www.javaworld.com/jw-03-2000/jw-03-ssj-jsp.html,
March 2000.
[9] De Troyer, O. and Casteleyn, S. (2004). Designing
localized web sites. In 5th International Conference on
Web Information Systems Engineering (WISE 2004),
volume 3306, pages 547558. Springer.
[10] Velocity.
http://jakarta.apache.org/velocity/index.html
[11] A Framework for the Support of Multilingual
Computing Environments, Yip Chi Technical report
TR-97-02 University of Hong Kong.