US20140325399A1 - Front-end tool for displaying diagnostic information to facilitate web page development - Google Patents

Front-end tool for displaying diagnostic information to facilitate web page development Download PDF

Info

Publication number
US20140325399A1
US20140325399A1 US13/874,297 US201313874297A US2014325399A1 US 20140325399 A1 US20140325399 A1 US 20140325399A1 US 201313874297 A US201313874297 A US 201313874297A US 2014325399 A1 US2014325399 A1 US 2014325399A1
Authority
US
United States
Prior art keywords
web page
metadata
page
user
browser
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US13/874,297
Other versions
US8875012B1 (en
Inventor
Georg Puchta
Veena Basavaraj
Johnathan Leppert
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
LinkedIn Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LinkedIn Corp filed Critical LinkedIn Corp
Priority to US13/874,297 priority Critical patent/US8875012B1/en
Assigned to LINKEDIN CORPORATION reassignment LINKEDIN CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BASAVARAJ, VEENA, LEPPERT, JOHNATHAN, PUCHTA, GEORG
Application granted granted Critical
Publication of US8875012B1 publication Critical patent/US8875012B1/en
Publication of US20140325399A1 publication Critical patent/US20140325399A1/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LINKEDIN CORPORATION
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • G06F17/3089
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking

Definitions

  • the disclosed embodiments generally relate to software development tools. More specifically, the disclosed embodiments relate to the design of a front-end development tool that displays diagnostic information and/or performance metrics to facilitate web page development.
  • a front-end server that generates the web page frequently makes calls to one or more back-end servers to perform various operations and to gather data from multiple sources for the web page.
  • the front-end server incorporates this data into markup for the web page and sends the markup to a browser on a client system to be displayed to the user.
  • This distributed web-page-creation process can make it challenging to fix an error in the web page, because it is often difficult to identify the source of the error.
  • the front-end server can translate the web page into French, and can possibly make calls to one or more back-end servers to perform various operations or to gather data to facilitate the translation process.
  • the developer if there is an error in the French-language text on the web page, the developer must somehow identify the source of the error, which can possibly exist in a number of files or servers located on different machines. In existing systems, this typically involves sifting through log files on various front-end and/or back-end servers to identify the source of the error, which can be an extremely time-consuming process.
  • FIG. 1 illustrates a system that generates a web page in accordance with the disclosed embodiments.
  • FIG. 2A presents a flow chart illustrating the process of gathering and displaying metadata associated with the web-page-assembly process in accordance with the disclosed embodiments.
  • FIG. 2B presents a flow chart illustrating the process of gathering and displaying performance metrics associated with user interactions with a web page in accordance with the disclosed embodiments.
  • FIG. 3A presents a flow chart illustrating the process of displaying metadata in accordance with the disclosed embodiments.
  • FIG. 3B presents a flow chart illustrating the process of displaying additional metadata in accordance with the disclosed embodiments.
  • FIG. 4 illustrates a web page and an associated popup in accordance with the disclosed embodiments.
  • FIG. 5 illustrates a popup in accordance with the disclosed embodiments.
  • FIG. 6 presents a flow chart illustrating the process of fixing a translation error in accordance with the disclosed embodiments.
  • the data structures and code described in this detailed description are typically stored on a computer-readable storage medium, which may be any device or medium that can store code and/or data for use by a computer system.
  • the computer-readable storage medium includes, but is not limited to, volatile memory, non-volatile memory, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs), DVDs (digital versatile discs or digital video discs), or other media capable of storing computer-readable media now known or later developed.
  • the methods and processes described in the detailed description section can be embodied as code and/or data, which can be stored in a computer-readable storage medium as described above.
  • a computer system reads and executes the code and/or data stored on the computer-readable storage medium, the computer system performs the methods and processes embodied as data structures and code and stored within the computer-readable storage medium.
  • the methods and processes described below can be included in hardware modules.
  • the hardware modules can include, but are not limited to, application-specific integrated circuit (ASIC) chips, field-programmable gate arrays (FPGAs), and other programmable-logic devices now known or later developed. When the hardware modules are activated, the hardware modules perform the methods and processes included within the hardware modules.
  • ASIC application-specific integrated circuit
  • FPGAs field-programmable gate arrays
  • FIG. 1 illustrates a system that generates a web page 117 in accordance with the disclosed embodiments.
  • This system assembles and renders web page 117 at a front-end server 120 that hosts a website 119 .
  • a user 106 can access website 119 through a browser 102 located on a client system 118 .
  • website 119 can generally include any type of website comprising one or more web-interlinked pages which can be accessed by a user 106 .
  • the website 119 provides access to an online professional network, such as the LinkedInTM website hosted by the LinkedIn Corporation of Mountain View, Calif.
  • Browser 102 can generally include any type of browser that can be used to view web pages, such as the Internet ExplorerTM browser distributed by the Microsoft Corporation of Redmond, Wash., or the FirefoxTM browser distributed by the Mozilla Corporation of Mountain View, Calif.
  • Client system 118 can generally include any type of portable or non-portable computer system that is capable of hosting a web browser, such as a desktop computer system, a laptop computer system, a tablet computer system or a smartphone.
  • Browser 102 is associated with a cache 103 that can store a number of different items, such as markup for recently accessed web pages, JavaScript code and metadata 104 , wherein metadata 104 is associated with the page-assembly process as is described in more detail below with reference to FIGS. 2A-5 .
  • metadata 104 can generally include any type of data that can be used to determine how specific elements of web page 117 were assembled.
  • metadata 104 can include (1) a list of services that were accessed during the web-page-assembly process, (2) a list of files were accessed by the services, (3) data items that were returned by the services, and (4) a description of computational operations that were applied to the returned information to produce the data items.
  • Browser 102 can additionally request and receive static JavaScript code (JS) 108 from a content distribution network 110 (CDN), wherein CDN 110 comprises a distributed set of servers configured to serve content to end-users with high availability and high performance.
  • JS JavaScript code
  • front-end server 120 communicates with multiple back-end servers 121 - 123 to retrieve data items to be incorporated into various web pages.
  • a back-end server 121 can be responsible for translating textual information on a web page from a source language (such as US English) into a target language (such as French).
  • back-end server 122 can provide real-time prices for stocks, and front-end server 120 can incorporate these real-time prices in a web page that displays an associated investment portfolio to a user.
  • front-end server 120 renders markup for the web page 117 .
  • This can involve making calls to back-end servers 121 - 123 to obtain raw data for web page 117 .
  • Front-end server 120 processes this raw data and incorporates it into the markup for web page 117 .
  • front-end server 120 and back-end servers 121 - 123 can collect metadata describing how data is assembled to produce web page 117 .
  • Front-end server 120 accumulates this metadata 104 and sends it to browser 102 located on client system 118 .
  • Browser 102 can store this metadata 104 in a local cache 103 along with the markup for web page 117 .
  • web page 117 can be configured to request and receive JavaScript code (JS) 108 from CDN 110 to process metadata 104 .
  • this JavaScript code 108 renders a popup, which selectively displays portions of metadata 104 as is described in more detail below with reference to FIGS. 2A-5 .
  • metadata 104 can be displayed in a number of different ways, such as by using a popup, temporarily switching to another page that displays the metadata, or displaying the metadata in a translucent overlay. Hence, the disclosed embodiments are not meant to be limited to using popups to display metadata.
  • FIG. 2A presents a flow chart illustrating the process of gathering and displaying metadata 104 associated with the assembly process for web page 117 in accordance with the disclosed embodiments.
  • This process starts when the user triggers or somehow activates a special “diagnostic mode” on client system 118 (step 202 ). This can involve the user selecting an option to activate the special diagnostic mode while the user is accessing the website 119 . Alternatively, an administrator associated with website 119 can activate the special diagnostic mode from client system 118 or from front-end server 120 .
  • client system 118 sends a cookie to front-end server 120 , wherein this cookie tells front-end server 120 to begin capturing metadata 104 associated with the page-assembly process (step 204 ). Then, front-end server 120 instructs back-end servers 121 - 123 to begin capturing metadata 104 associated with the page-assembly process (step 206 ). For example, suppose back-end server 121 is asked to provide a data value to be incorporated into the web page.
  • back-end server 121 can keep track of which files were accessed by back-end server 121 , what information was retrieved from the files, and what computational operations were performed on the retrieved information by back-end server 121 to generate a data value.
  • front-end server 120 When web page 117 is being rendered by front-end server 120 , front-end server 120 captures metadata 104 describing the assembly process and receives captured metadata 104 from the back-end servers 121 - 123 (step 208 ). While gathering this metadata 104 , front-end server 120 can possibly create a “call graph” which lists services and/or servers that were accessed to assemble the page, and possibly how long each service took to execute. Note that services can possibly call other services, so the call graph can have multiple levels.
  • Metadata 104 can also include information from a JavaServer Pages (JSP) template or a Dynamic Web Template (DWT), which is used to render web page 117 , wherein the JSP template or the DWT template indicates which files are accessed to create web page 117 .
  • JSP JavaServer Pages
  • DWT Dynamic Web Template
  • Front-end server 120 can also incorporate an instruction into web page 117 which causes browser 102 to retrieve static JavaScript code 108 from CDN 110 , wherein JavaScript code 108 generates a popup (or some other user interface element) that can be used to selectively display the metadata 104 associated with the web page (step 210 ).
  • front-end server 120 sends web page 117 and its associated metadata 104 to browser 102 (step 212 ), and browser 102 stores metadata 104 (and possibly the markup for web page 117 ) in local cache 103 . Then, browser 102 displays web page 117 and also executes JavaScript code 108 , which creates a popup to display metadata 104 as is described in more detail below with reference to FIGS. 3-5 (step 214 ).
  • FIG. 2B presents a flow chart illustrating the process of gathering and displaying performance metrics associated with user interactions with web page 117 in accordance with the disclosed embodiments.
  • the same mechanism that can be used to display metadata about the web-page-assembly process can also be used to display metadata comprising performance metrics associated with web page 117 .
  • the user triggers or somehow activates a performance-monitoring mode on client system 118 (step 232 ). This can involve the user selecting an option to activate the performance-monitoring mode while the user is accessing the website 119 . Alternatively, an administrator associated with website 119 can activate the performance-monitoring mode.
  • the performance-monitoring mode can be enabled separately from, or at the same time as, the diagnostic mode that gathers metadata associated with the web-page-assembly process.
  • the system keeps track of various performance metrics related to the user's interactions with web page 117 (step 234 ). For example, the system can keep track of the number of queries per page. Or, the system can keep track of latency information for web page 117 , which can involve keeping track of how long web page 117 takes to load, or how long specific elements within web page 117 take to load. The system can also keep track of how long the user views web page 117 , or how often the user activates certain user interface elements (e.g., buttons) within web page 117 .
  • user interface elements e.g., buttons
  • the system stores the measured performance metrics (step 236 ). This can involve storing the performance metrics in application-level data structures, system-level data structures, a special file, or possibly in cache 103 .
  • the system selectively displays the performance metrics to the user (step 238 ). This can involve using a popup as described above.
  • Metadata 104 can include a call graph specifying which services or servers were involved in generating the web page and how long each service took to execute. It can also include information from JSP/DWT templates specifying which files were accessed to generate the web page, and performance metrics associated with use of the web page.
  • the system can also display metadata associated with translations of textual information in a web page.
  • a web page can be translated from a source language, such as US English, into a target language, such as French.
  • This translation process can involve accessing a number of different services and files, and metadata 104 can keep track of which services and files were accessed.
  • the system can also display metadata that describes A/B tests, wherein during A/B tests different variations (treatments) of a web page are tested to determine their associated impact on user behavior.
  • A/B test can be used to determine how effective different advertising messages are in causing a user to click on a link to an advertiser's website.
  • the system can keep track of metadata that described different treatments for both the active and inactive A/B tests, as well as associated empirical data about resulting user behavior.
  • the system can additionally display metadata containing debugging information.
  • the front-end server 120 can keep track of warnings and error messages that are triggered as the web page is being assembled and rendered. The system can then selectively output these warnings and error messages using a popup when the associated web page is displayed.
  • FIG. 3A presents a flow chart illustrating the process of displaying metadata in accordance with the disclosed embodiments.
  • browser 102 receives markup for a web page 117 and associated metadata 104 from front-end server 120 (step 302 ).
  • browser 102 stores metadata 104 in a local cache 103 (step 304 ).
  • metadata 104 comprises a set of properties files that were used to render the page, wherein each properties file includes sets of keys which index specific entries in the properties file, and associated values stored in the entries.
  • metadata 104 can generally be stored in a wide range of formats with different indexing techniques.
  • a properties file might be associated with a specific language, such as German; the indices into the properties file can be associated with specific English phrases; and the associated values can be text strings containing German translations for the English phrases.
  • browser 102 requests and receives JavaScript code 108 for a popup from CDN 110 (step 306 ). Then, browser 102 display web page 117 (step 308 ), and JavaScript code 108 generates and displays a popup that can be used to selectively display metadata 104 (step 310 ).
  • the popup can display all of the metadata associated with web page 117 , or alternatively can display selected portions of the metadata. For example, in one embodiment, when user 106 moves a cursor over a specific clement on web page 117 (step 312 ), the system displays metadata associated with the element.
  • the JavaScript code 108 uses a value (e.g., a text string) associated with the element to search metadata 104 to identify a specific properties file and a specific key containing the value (text string) (step 314 ).
  • the JavaScript code 108 uses a popup to display: (1) the file name for the properties file, (2) the specific key, and (3) the associated value (text string) (step 316 ).
  • the popup displays all entries in properties files that match a specific value. For example, if the values are text strings, the popup can display all properties file entries that contain a specific keyword which is entered by the user.
  • FIG. 3B presents a flow chart illustrating the process of displaying additional metadata in accordance with the disclosed embodiments.
  • the user may want to obtain additional information about a specific item of metadata that appears in the popup. For example, if the popup displays a translation of a text string, the user may want to know the last date the translation was updated, or the user may want to obtain contact information for the person who performed the translation.
  • the system allows the user to obtain the additional information as follows.
  • the user requests additional information about an item of metadata which appears in the popup associated with a web page in a browser (step 322 ). This can involve double-clicking on the item of metadata in the popup, or entering a query for the additional metadata into a field in the popup.
  • the popup sends a request for the additional information to a front-end server (step 324 ).
  • the front-end server can possibly send associated requests to one or more back-end servers (step 326 ).
  • the additional metadata does not exist on the front-end server and it is necessary to query the back-end servers to obtain this additional metadata.
  • the contact information for the person who performed the translation may be located on aback-end server that stores the translations.
  • the front-end server assembles the additional information (step 328 ), which can involve assembling information obtained from the front-end server and/or one or more back-end servers.
  • the front end-server then sends the additional information to the popup (step 330 ). This enables the popup to display the additional information (step 332 ).
  • FIG. 4 illustrates a web page 400 and associated popup 402 for displaying metadata
  • FIG. 5 illustrates more details about popup 402 in accordance with the disclosed embodiments.
  • popup 402 includes a criteria field 504 and a search button 502 .
  • the user can enter a string or a value into criteria field 504 and can activate search button 502 to find matching properties file entries. (Alternatively, as mentioned above, the search can be directed to metadata associated with a web page element in proximity to a cursor.)
  • popup 402 displays the specific search criteria 505 .
  • Popup 402 also displays properties file entries that are exact matches 506 and partial matches 508 . Note that each displayed entry lists (1) the name of the properties file, (2) the key for the entry, and (3) the value stored in the entry.
  • popup 402 includes a number of buttons, including buttons to: retranslate 509 (which is described in more detail below with reference to FIG. 6 ); show metadata 510 ; ask for help 512 ; and cancel a query 5
  • the front-end tool is configured to fix translation errors in web pages, wherein the web page is translated from a source language, such as US English, into a target language, such as French.
  • FIG. 6 presents a flow chart illustrating the process of fixing a translation error in accordance with the disclosed embodiments.
  • the user identifies some text that appears to be mistranslated on a web page and moves a cursor over the text in question (step 602 ).
  • the popup selects and displays metadata associated with the text in question (step 604 ).
  • the user moves the cursor inside the popup and clicks on the entry for the text in question (step 606 ).
  • the user clicks on the retranslate button 509 (step 608 ).
  • the system updates various translation parameters, such as the email address of the translator and the language associated with the translation (step 610 ).
  • the system then creates a new project to correct the translation error (step 612 ), which can involve causing a service which is responsible for the translation to create the new project which is sent to a translation application.
  • an operator of the translation application receives the project to correct the translation error (step 614 ).
  • the operator corrects the translation which corrects a file or database that stores the translation, and this ultimately causes the corrected translation to be displayed in the web page.
  • the above-described system can possibly be extended to mobile applications which display pages to a user, wherein the pages are assembled through a process which similarly involves a front-end server and one or more back-end servers.
  • the disclosed embodiments can be applied to any system that displays metadata associated with some type of user interface, such as a web page, a page of a mobile application, or a user interface for a desktop application. Note that, in mobile applications, instead of using a popup it may be more advantageous to allow the user to “swipe” the screen to uncover an underlying screen that contains the diagnostic information.

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

The disclosed embodiments relate to a system that displays diagnostic information to facilitate web page development. While a web page is being assembled at a front-end system using data gathered from one or more back-end systems, the system accumulates metadata associated with the assembly process. Next, the system renders the web page using the gathered data. Finally, the system sends the rendered web page along with the metadata to a browser to be displayed to a user, wherein the browser is configured to selectively display the metadata when the web page is displayed.

Description

    BACKGROUND
  • 1. Field
  • The disclosed embodiments generally relate to software development tools. More specifically, the disclosed embodiments relate to the design of a front-end development tool that displays diagnostic information and/or performance metrics to facilitate web page development.
  • 2. Related Art
  • In modern websites, a great amount of effort can go into assembling and rendering a web page that is ultimately presented to a user. For example, a front-end server that generates the web page frequently makes calls to one or more back-end servers to perform various operations and to gather data from multiple sources for the web page. Next, the front-end server incorporates this data into markup for the web page and sends the markup to a browser on a client system to be displayed to the user.
  • This distributed web-page-creation process can make it challenging to fix an error in the web page, because it is often difficult to identify the source of the error. For example, if a web page is generated for a user in a French-speaking country, the front-end server can translate the web page into French, and can possibly make calls to one or more back-end servers to perform various operations or to gather data to facilitate the translation process. In this case, if there is an error in the French-language text on the web page, the developer must somehow identify the source of the error, which can possibly exist in a number of files or servers located on different machines. In existing systems, this typically involves sifting through log files on various front-end and/or back-end servers to identify the source of the error, which can be an extremely time-consuming process.
  • BRIEF DESCRIPTION OF THE FIGURES
  • FIG. 1 illustrates a system that generates a web page in accordance with the disclosed embodiments.
  • FIG. 2A presents a flow chart illustrating the process of gathering and displaying metadata associated with the web-page-assembly process in accordance with the disclosed embodiments.
  • FIG. 2B presents a flow chart illustrating the process of gathering and displaying performance metrics associated with user interactions with a web page in accordance with the disclosed embodiments.
  • FIG. 3A presents a flow chart illustrating the process of displaying metadata in accordance with the disclosed embodiments.
  • FIG. 3B presents a flow chart illustrating the process of displaying additional metadata in accordance with the disclosed embodiments.
  • FIG. 4 illustrates a web page and an associated popup in accordance with the disclosed embodiments.
  • FIG. 5 illustrates a popup in accordance with the disclosed embodiments.
  • FIG. 6 presents a flow chart illustrating the process of fixing a translation error in accordance with the disclosed embodiments.
  • DETAILED DESCRIPTION
  • The following description is presented to enable any person skilled in the art to make and use the present embodiments, and is provided in the context of a particular application and its requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the present embodiments. Thus, the present embodiments are not limited to the embodiments shown, but are to be accorded the widest scope consistent with the principles and features disclosed herein.
  • The data structures and code described in this detailed description are typically stored on a computer-readable storage medium, which may be any device or medium that can store code and/or data for use by a computer system. The computer-readable storage medium includes, but is not limited to, volatile memory, non-volatile memory, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs), DVDs (digital versatile discs or digital video discs), or other media capable of storing computer-readable media now known or later developed.
  • The methods and processes described in the detailed description section can be embodied as code and/or data, which can be stored in a computer-readable storage medium as described above. When a computer system reads and executes the code and/or data stored on the computer-readable storage medium, the computer system performs the methods and processes embodied as data structures and code and stored within the computer-readable storage medium. Furthermore, the methods and processes described below can be included in hardware modules. For example, the hardware modules can include, but are not limited to, application-specific integrated circuit (ASIC) chips, field-programmable gate arrays (FPGAs), and other programmable-logic devices now known or later developed. When the hardware modules are activated, the hardware modules perform the methods and processes included within the hardware modules.
  • System for Generating a Web Page
  • FIG. 1 illustrates a system that generates a web page 117 in accordance with the disclosed embodiments. This system assembles and renders web page 117 at a front-end server 120 that hosts a website 119. As illustrated in FIG. 1, a user 106 can access website 119 through a browser 102 located on a client system 118. Note that website 119 can generally include any type of website comprising one or more web-interlinked pages which can be accessed by a user 106. In one embodiment, the website 119 provides access to an online professional network, such as the LinkedIn™ website hosted by the LinkedIn Corporation of Mountain View, Calif. Browser 102 can generally include any type of browser that can be used to view web pages, such as the Internet Explorer™ browser distributed by the Microsoft Corporation of Redmond, Wash., or the Firefox™ browser distributed by the Mozilla Corporation of Mountain View, Calif. Client system 118 can generally include any type of portable or non-portable computer system that is capable of hosting a web browser, such as a desktop computer system, a laptop computer system, a tablet computer system or a smartphone.
  • Browser 102 is associated with a cache 103 that can store a number of different items, such as markup for recently accessed web pages, JavaScript code and metadata 104, wherein metadata 104 is associated with the page-assembly process as is described in more detail below with reference to FIGS. 2A-5. Note that metadata 104 can generally include any type of data that can be used to determine how specific elements of web page 117 were assembled. For example, metadata 104 can include (1) a list of services that were accessed during the web-page-assembly process, (2) a list of files were accessed by the services, (3) data items that were returned by the services, and (4) a description of computational operations that were applied to the returned information to produce the data items. Browser 102 can additionally request and receive static JavaScript code (JS) 108 from a content distribution network 110 (CDN), wherein CDN 110 comprises a distributed set of servers configured to serve content to end-users with high availability and high performance.
  • During operation, front-end server 120 communicates with multiple back-end servers 121-123 to retrieve data items to be incorporated into various web pages. For example, a back-end server 121 can be responsible for translating textual information on a web page from a source language (such as US English) into a target language (such as French). In another example, back-end server 122 can provide real-time prices for stocks, and front-end server 120 can incorporate these real-time prices in a web page that displays an associated investment portfolio to a user.
  • During operation, user 106 causes browser 102 to request a web page 117 from website 119 on front-end server 120. In response to this request, front-end server 120 renders markup for the web page 117. This can involve making calls to back-end servers 121-123 to obtain raw data for web page 117. Front-end server 120 processes this raw data and incorporates it into the markup for web page 117. During this process, front-end server 120 and back-end servers 121-123 can collect metadata describing how data is assembled to produce web page 117. (Also, note that the web page can alternatively be assembled ahead of time, not in response to the browser requesting the web page.) Front-end server 120 accumulates this metadata 104 and sends it to browser 102 located on client system 118. Browser 102 can store this metadata 104 in a local cache 103 along with the markup for web page 117.
  • Note that web page 117 can be configured to request and receive JavaScript code (JS) 108 from CDN 110 to process metadata 104. In one embodiment, this JavaScript code 108 renders a popup, which selectively displays portions of metadata 104 as is described in more detail below with reference to FIGS. 2A-5. Moreover, metadata 104 can be displayed in a number of different ways, such as by using a popup, temporarily switching to another page that displays the metadata, or displaying the metadata in a translucent overlay. Hence, the disclosed embodiments are not meant to be limited to using popups to display metadata.
  • Process of Gathering Metadata
  • FIG. 2A presents a flow chart illustrating the process of gathering and displaying metadata 104 associated with the assembly process for web page 117 in accordance with the disclosed embodiments. This process starts when the user triggers or somehow activates a special “diagnostic mode” on client system 118 (step 202). This can involve the user selecting an option to activate the special diagnostic mode while the user is accessing the website 119. Alternatively, an administrator associated with website 119 can activate the special diagnostic mode from client system 118 or from front-end server 120.
  • Next, in response to the user activating the special diagnostic mode, client system 118 sends a cookie to front-end server 120, wherein this cookie tells front-end server 120 to begin capturing metadata 104 associated with the page-assembly process (step 204). Then, front-end server 120 instructs back-end servers 121-123 to begin capturing metadata 104 associated with the page-assembly process (step 206). For example, suppose back-end server 121 is asked to provide a data value to be incorporated into the web page. While gathering metadata 104, back-end server 121 can keep track of which files were accessed by back-end server 121, what information was retrieved from the files, and what computational operations were performed on the retrieved information by back-end server 121 to generate a data value.
  • When web page 117 is being rendered by front-end server 120, front-end server 120 captures metadata 104 describing the assembly process and receives captured metadata 104 from the back-end servers 121-123 (step 208). While gathering this metadata 104, front-end server 120 can possibly create a “call graph” which lists services and/or servers that were accessed to assemble the page, and possibly how long each service took to execute. Note that services can possibly call other services, so the call graph can have multiple levels.
  • Metadata 104 can also include information from a JavaServer Pages (JSP) template or a Dynamic Web Template (DWT), which is used to render web page 117, wherein the JSP template or the DWT template indicates which files are accessed to create web page 117.
  • Front-end server 120 can also incorporate an instruction into web page 117 which causes browser 102 to retrieve static JavaScript code 108 from CDN 110, wherein JavaScript code 108 generates a popup (or some other user interface element) that can be used to selectively display the metadata 104 associated with the web page (step 210).
  • Next, front-end server 120 sends web page 117 and its associated metadata 104 to browser 102 (step 212), and browser 102 stores metadata 104 (and possibly the markup for web page 117) in local cache 103. Then, browser 102 displays web page 117 and also executes JavaScript code 108, which creates a popup to display metadata 104 as is described in more detail below with reference to FIGS. 3-5 (step 214).
  • Process of Gathering Performance Data
  • FIG. 2B presents a flow chart illustrating the process of gathering and displaying performance metrics associated with user interactions with web page 117 in accordance with the disclosed embodiments. Note that the same mechanism that can be used to display metadata about the web-page-assembly process can also be used to display metadata comprising performance metrics associated with web page 117. First, the user triggers or somehow activates a performance-monitoring mode on client system 118 (step 232). This can involve the user selecting an option to activate the performance-monitoring mode while the user is accessing the website 119. Alternatively, an administrator associated with website 119 can activate the performance-monitoring mode. Note that the performance-monitoring mode can be enabled separately from, or at the same time as, the diagnostic mode that gathers metadata associated with the web-page-assembly process.
  • Next, while the web page 117 is being displayed to the user, the system keeps track of various performance metrics related to the user's interactions with web page 117 (step 234). For example, the system can keep track of the number of queries per page. Or, the system can keep track of latency information for web page 117, which can involve keeping track of how long web page 117 takes to load, or how long specific elements within web page 117 take to load. The system can also keep track of how long the user views web page 117, or how often the user activates certain user interface elements (e.g., buttons) within web page 117.
  • Next, the system stores the measured performance metrics (step 236). This can involve storing the performance metrics in application-level data structures, system-level data structures, a special file, or possibly in cache 103.
  • Finally, the system selectively displays the performance metrics to the user (step 238). This can involve using a popup as described above.
  • Other Types of Data
  • The described embodiments can generally be used to display any type of metadata associated with web page 117. As mentioned above, metadata 104 can include a call graph specifying which services or servers were involved in generating the web page and how long each service took to execute. It can also include information from JSP/DWT templates specifying which files were accessed to generate the web page, and performance metrics associated with use of the web page.
  • In addition to these previously mentioned types of metadata, the system can also display metadata associated with translations of textual information in a web page. For example, a web page can be translated from a source language, such as US English, into a target language, such as French. This translation process can involve accessing a number of different services and files, and metadata 104 can keep track of which services and files were accessed.
  • The system can also display metadata that describes A/B tests, wherein during A/B tests different variations (treatments) of a web page are tested to determine their associated impact on user behavior. For example, A/B test can be used to determine how effective different advertising messages are in causing a user to click on a link to an advertiser's website. In this example, the system can keep track of metadata that described different treatments for both the active and inactive A/B tests, as well as associated empirical data about resulting user behavior.
  • The system can additionally display metadata containing debugging information. For example, the front-end server 120 can keep track of warnings and error messages that are triggered as the web page is being assembled and rendered. The system can then selectively output these warnings and error messages using a popup when the associated web page is displayed.
  • Process of Displaying Metadata
  • FIG. 3A presents a flow chart illustrating the process of displaying metadata in accordance with the disclosed embodiments. At the start of this process, browser 102 receives markup for a web page 117 and associated metadata 104 from front-end server 120 (step 302). Next, browser 102 stores metadata 104 in a local cache 103 (step 304).
  • In one embodiment, metadata 104 comprises a set of properties files that were used to render the page, wherein each properties file includes sets of keys which index specific entries in the properties file, and associated values stored in the entries. However, note that metadata 104 can generally be stored in a wide range of formats with different indexing techniques. In one example, to facilitate translations of website text, a properties file might be associated with a specific language, such as German; the indices into the properties file can be associated with specific English phrases; and the associated values can be text strings containing German translations for the English phrases.
  • Next, in response to an instruction stored in web page 117, browser 102 requests and receives JavaScript code 108 for a popup from CDN 110 (step 306). Then, browser 102 display web page 117 (step 308), and JavaScript code 108 generates and displays a popup that can be used to selectively display metadata 104 (step 310).
  • The popup can display all of the metadata associated with web page 117, or alternatively can display selected portions of the metadata. For example, in one embodiment, when user 106 moves a cursor over a specific clement on web page 117 (step 312), the system displays metadata associated with the element. In this embodiment, the JavaScript code 108 uses a value (e.g., a text string) associated with the element to search metadata 104 to identify a specific properties file and a specific key containing the value (text string) (step 314). Finally, the JavaScript code 108 uses a popup to display: (1) the file name for the properties file, (2) the specific key, and (3) the associated value (text string) (step 316). In another example, the popup displays all entries in properties files that match a specific value. For example, if the values are text strings, the popup can display all properties file entries that contain a specific keyword which is entered by the user.
  • Process of Displaying Additional Metadata
  • FIG. 3B presents a flow chart illustrating the process of displaying additional metadata in accordance with the disclosed embodiments. In some cases, the user may want to obtain additional information about a specific item of metadata that appears in the popup. For example, if the popup displays a translation of a text string, the user may want to know the last date the translation was updated, or the user may want to obtain contact information for the person who performed the translation.
  • In some embodiments, the system allows the user to obtain the additional information as follows. First, the user requests additional information about an item of metadata which appears in the popup associated with a web page in a browser (step 322). This can involve double-clicking on the item of metadata in the popup, or entering a query for the additional metadata into a field in the popup. Next, the popup sends a request for the additional information to a front-end server (step 324). When the front-end server receives this request, the front-end server can possibly send associated requests to one or more back-end servers (step 326). In many cases, the additional metadata does not exist on the front-end server and it is necessary to query the back-end servers to obtain this additional metadata. In the example mentioned above, the contact information for the person who performed the translation may be located on aback-end server that stores the translations.
  • Next, the front-end server assembles the additional information (step 328), which can involve assembling information obtained from the front-end server and/or one or more back-end servers. The front end-server then sends the additional information to the popup (step 330). This enables the popup to display the additional information (step 332).
  • Popup
  • FIG. 4 illustrates a web page 400 and associated popup 402 for displaying metadata, and FIG. 5 illustrates more details about popup 402 in accordance with the disclosed embodiments. Note that popup 402 includes a criteria field 504 and a search button 502. The user can enter a string or a value into criteria field 504 and can activate search button 502 to find matching properties file entries. (Alternatively, as mentioned above, the search can be directed to metadata associated with a web page element in proximity to a cursor.) Note that popup 402 displays the specific search criteria 505. Popup 402 also displays properties file entries that are exact matches 506 and partial matches 508. Note that each displayed entry lists (1) the name of the properties file, (2) the key for the entry, and (3) the value stored in the entry. Finally, popup 402 includes a number of buttons, including buttons to: retranslate 509 (which is described in more detail below with reference to FIG. 6); show metadata 510; ask for help 512; and cancel a query 514.
  • Process of Fixing a Translation Error
  • In one embodiment, the front-end tool is configured to fix translation errors in web pages, wherein the web page is translated from a source language, such as US English, into a target language, such as French. More specifically, FIG. 6 presents a flow chart illustrating the process of fixing a translation error in accordance with the disclosed embodiments. (Note that the corresponding popup for this embodiment appears in FIG. 5.) At the start of the process, the user identifies some text that appears to be mistranslated on a web page and moves a cursor over the text in question (step 602). Next, the popup selects and displays metadata associated with the text in question (step 604).
  • In order to fix the translation, the user moves the cursor inside the popup and clicks on the entry for the text in question (step 606). The user then clicks on the retranslate button 509 (step 608). Next, in preparation for retranslation, the system updates various translation parameters, such as the email address of the translator and the language associated with the translation (step 610). The system then creates a new project to correct the translation error (step 612), which can involve causing a service which is responsible for the translation to create the new project which is sent to a translation application. Subsequently, an operator of the translation application receives the project to correct the translation error (step 614). Finally, the operator corrects the translation which corrects a file or database that stores the translation, and this ultimately causes the corrected translation to be displayed in the web page.
  • Extensions
  • The above-described system can possibly be extended to mobile applications which display pages to a user, wherein the pages are assembled through a process which similarly involves a front-end server and one or more back-end servers. In general, the disclosed embodiments can be applied to any system that displays metadata associated with some type of user interface, such as a web page, a page of a mobile application, or a user interface for a desktop application. Note that, in mobile applications, instead of using a popup it may be more advantageous to allow the user to “swipe” the screen to uncover an underlying screen that contains the diagnostic information.
  • The foregoing descriptions of embodiments have been presented for purposes of illustration and description only. They are not intended to be exhaustive or to limit the present description to the forms disclosed. Accordingly, many modifications and variations will be apparent to practitioners skilled in the art. Additionally, the above disclosure is not intended to limit the present description. The scope of the present description is defined by the appended claims.

Claims (23)

1. A method for displaying diagnostic information to facilitate web page development, comprising:
while a web page is being assembled at a front-end system using data gathered from one or more back-end systems, accumulating metadata associated with the assembly process;
configuring the web page to request and receive JavaScript (JS) code from a content distribution network (CDN), wherein the CDN comprises a distributed set of servers configured to serve content to end-users;
rendering the web page using the gathered data; and
sending the rendered web page to a browser to be displayed to a user, wherein the metadata is sent along with the rendered web page, thereby enabling the browser to:
receive from the user a selection of a page element on the rendered web page;
use a string stored within the page element to perform a string search of the metadata to find a subset of metadata associated with the selected page element; and
display the subset of metadata to the user via a popup using the received JS code.
2. The method of claim 1, wherein the metadata includes a call graph that identifies one or more service that were accessed during the assembly process.
3. The method of claim 1, wherein the metadata includes a template which identifies source files that were used to render the web page.
4. The method of claim 1, wherein the metadata additionally includes performance metrics associated with the web page, so that the performance metrics can be selectively displayed when the web page is displayed.
5. The method of claim 1, wherein the metadata identifies currently active A/B tests, inactive A/B tests and associated treatments.
6. The method of claim 1, wherein the metadata includes page-level and page-module-level debugging information.
7. The method of claim 1, wherein upon receiving a request from the browser asking for additional metadata, the method further comprises:
forwarding the request to one or more back-end servers; and
when the additional metadata is received in response to the request from the one or more back-end servers, forwarding the additional metadata to the browser.
8. (canceled)
9. The method of claim 1, wherein the popup displays metadata associated with one or more elements over which a cursor is positioned in the web page.
10. The method of claim 1, wherein the popup displays metadata associated with one or more keywords entered by the user.
11. A method for displaying diagnostic information to facilitate web page development, comprising:
receiving, at a browser, a web page along with metadata that relates to the process of assembling the web page, wherein the metadata was accumulated while the web page was being assembled at a front-end system using data gathered from one or more back-end systems;
configuring the web page to request and receive JavaScript (JS) code from a content distribution network (CDN), wherein the CDN comprises a distributed set of servers configured to serve content to end-users;
displaying the web page to a user;
receiving from the user a selection of a page element on the web page;
using a string stored within the page element to perform a string search of the metadata to find a subset of metadata associated with the selected page element; and
displaying the subset of metadata to the user via a popup using the received JS code.
12. (canceled)
13. The method of claim 11, wherein the popup displays metadata associated with one or more elements over which a cursor is positioned in the web page which is controlled by the user.
14. The method of claim 11, wherein the popup displays metadata associated with one or more keywords entered by the user.
15. The method of claim 11, wherein upon receiving a request from the user asking for additional metadata, the method further comprises:
forwarding the request to the front-end server, wherein the front-end server forwards the request to one or more back-end servers; and
when the additional metadata is received from the front-end server and the one or more back-end servers in response to the request, displaying the additional metadata to the user.
16. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for displaying diagnostic information to facilitate web page development, the method comprising:
while a web page is being assembled at a front-end system using data gathered from one or more back-end systems, accumulating metadata associated with the assembly process;
configuring the web page to request and receive JavaScript (JS) code from a content distribution network (CDN), wherein the CDN comprises a distributed set of servers configured to serve content to end-users;
rendering the web page using the gathered data; and
sending the rendered web page to a browser to be displayed to a user, wherein the metadata is sent along with the rendered web page, thereby enabling the browser to:
receive from the user a selection of a page element on the rendered web page;
use a string stored within the page element to perform a string search of the metadata to find a subset of metadata associated with the selected page element; and
display the subset of metadata to the user via a popup using the received JS code.
17. A computer system that facilitates displaying diagnostic information for web page development, comprising:
a hardware module; and
a process, wherein the process is stored in the hardware module and configurable to be executed by the hardware module, configured to:
assemble a web page using data gathered from one or more back-end systems,
accumulate metadata associated with the assembly process,
configure the web page to request and receive JavaScript (JS) code from a content distribution network (CDN), wherein the CDN comprises a distributed set of servers configured to serve content to end-users,
render the web page using the gathered data, and
send the rendered web page to a browser to be displayed to a user, wherein the metadata is sent along with the rendered web page, thereby enabling the browser to:
receive from the user a selection of a page element on the rendered web page;
use a string stored within the page element to perform a string search of the metadata to find a subset of metadata associated with the selected page element; and
display the subset of metadata to the user via a popup using the received JS code.
18. The computer system of claim 17, wherein the metadata includes a call graph that identifies one or more services that were accessed during the assembly process.
19. The computer system of claim 17, wherein the metadata includes a template which identifies source files that were used to render the web page.
20. The computer system of claim 17, wherein the metadata additionally includes performance metrics associated with the web page, so that the performance metrics can be selectively displayed when the web page is displayed.
21. The computer system of claim 17, wherein the metadata identifies currently active A/B tests, inactive A/B tests and associated treatments.
22. The computer system of claim 17, wherein the metadata includes page-level and page-module-level debugging information.
23. The method of claim 1, further comprising:
receiving a cookie from the browser that requests that metadata associated with a page-assembly process be captured; and
in response to receiving the cookie, instructing back-end systems to capture metadata associated with the page-assembly process.
US13/874,297 2013-04-30 2013-04-30 Front-end tool for displaying diagnostic information to facilitate web page development Active US8875012B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/874,297 US8875012B1 (en) 2013-04-30 2013-04-30 Front-end tool for displaying diagnostic information to facilitate web page development

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/874,297 US8875012B1 (en) 2013-04-30 2013-04-30 Front-end tool for displaying diagnostic information to facilitate web page development

Publications (2)

Publication Number Publication Date
US8875012B1 US8875012B1 (en) 2014-10-28
US20140325399A1 true US20140325399A1 (en) 2014-10-30

Family

ID=51752908

Family Applications (1)

Application Number Title Priority Date Filing Date
US13/874,297 Active US8875012B1 (en) 2013-04-30 2013-04-30 Front-end tool for displaying diagnostic information to facilitate web page development

Country Status (1)

Country Link
US (1) US8875012B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106686037A (en) * 2015-11-09 2017-05-17 广州市动景计算机科技有限公司 Page detecting method, device, equipment and system
US9740668B1 (en) * 2013-03-14 2017-08-22 Amazon Technologies, Inc. Plotting webpage loading speeds and altering webpages and a service based on latency and pixel density

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10909475B2 (en) * 2013-05-09 2021-02-02 TravelPass, Group, LLC Systems and methods for minimizing travel costs for multi-night stays
US10277703B2 (en) 2015-07-22 2019-04-30 International Business Machines Corporation Optimizing bandwidth usage and improving performance for web page caching
CN107229655B (en) * 2016-03-25 2021-05-25 北京京东尚科信息技术有限公司 Updating method, device and system of page static file
US10462239B1 (en) * 2016-07-29 2019-10-29 Microsoft Technology Licensing, Llc Flexible units for experimentation
CN106100936A (en) * 2016-08-10 2016-11-09 乐视控股(北京)有限公司 Webpage method for monitoring performance and device and the webserver, client
CN108536805A (en) * 2018-04-04 2018-09-14 平安科技(深圳)有限公司 web access method and device
CN111045615A (en) * 2019-12-19 2020-04-21 厦门商集网络科技有限责任公司 Method and system for printing JS template customized at browser end

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001344105A (en) * 2000-03-31 2001-12-14 Hitachi Software Eng Co Ltd Web application developing method, development support system, and memory medium storing program related to this method
US7155489B1 (en) * 2000-06-28 2006-12-26 Microsoft Corporation Acquiring web page information without commitment to downloading the web page
US7653706B2 (en) * 2000-07-19 2010-01-26 Akamai Technologies, Inc. Dynamic image delivery system
US7792919B2 (en) * 2005-04-15 2010-09-07 Microsoft Corporation Methods and apparatus for performing diagnostics of web applications and services
US7941394B2 (en) * 2005-06-03 2011-05-10 Adobe Systems Incorporated User interface providing summary information or a status pane in a web analytics tool
US7975019B1 (en) * 2005-07-15 2011-07-05 Amazon Technologies, Inc. Dynamic supplementation of rendered web pages with content supplied by a separate source
US7822596B2 (en) * 2005-12-05 2010-10-26 Microsoft Corporation Flexible display translation
US8160909B2 (en) * 2007-02-06 2012-04-17 Digital River, Inc. Site optimizer
US20080228920A1 (en) * 2007-03-16 2008-09-18 Souders Steven K System and method for resource aggregation and distribution
US8271836B2 (en) * 2007-09-27 2012-09-18 Microsoft Corporation Capturing diagnostics in web browser applications
US8347269B2 (en) * 2007-09-28 2013-01-01 International Business Machines Corporation Method, system and computer program for debugging software applications in a web environment
US9064021B2 (en) * 2008-10-02 2015-06-23 Liveramp, Inc. Data source attribution system
US9141344B2 (en) * 2010-02-05 2015-09-22 Red Hat, Inc. Hover help support for application source code
US8341464B2 (en) * 2010-04-28 2012-12-25 Microsoft Corporation Diagnostic dashboard for web pages
US8566654B2 (en) * 2010-08-13 2013-10-22 Salesforce.Com, Inc. Debugging site errors by an admin as a guest user in a multi-tenant database environment

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Oney, Stephen, and Brad Myers. "FireCrystal: Understanding interactive behaviors in dynamic web pages." In Visual Languages and Human-Centric Computing, 2009. VL/HCC 2009. IEEE Symposium on, pp. 105-108. IEEE, 2009. *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9740668B1 (en) * 2013-03-14 2017-08-22 Amazon Technologies, Inc. Plotting webpage loading speeds and altering webpages and a service based on latency and pixel density
CN106686037A (en) * 2015-11-09 2017-05-17 广州市动景计算机科技有限公司 Page detecting method, device, equipment and system

Also Published As

Publication number Publication date
US8875012B1 (en) 2014-10-28

Similar Documents

Publication Publication Date Title
US8875012B1 (en) Front-end tool for displaying diagnostic information to facilitate web page development
US11886402B2 (en) Systems, methods, and media for dynamically generating informational content
US11838350B2 (en) Techniques for identifying issues related to digital interactions on websites
US10140314B2 (en) Previews for contextual searches
US20180232389A1 (en) Generating file usage information
US10169374B2 (en) Image searches using image frame context
US10423672B2 (en) Network resource-specific search assistance
US8910074B2 (en) System and method for performing auto scroll
US9460167B2 (en) Transition from first search results environment to second search results environment
US20120016857A1 (en) System and method for providing search engine optimization analysis
JP2018518726A (en) Information retrieval navigation method and apparatus
RU2583764C1 (en) Method of processing request for user to access web resource and server
US20190018884A1 (en) Multiple entity aware typeahead in searches
US8756292B2 (en) Smart cache learning mechanism in enterprise portal navigation
US10909170B2 (en) Method for processing and rendering feed-like based images for mobile devices
US12041142B2 (en) Analyzing website performance
Aljedaani et al. A comparison of bugs across the ios and android platforms of two open source cross platform browser apps
WO2019013834A1 (en) Index aware typeahead in searches
US20160292218A1 (en) Extensible data query scenario definition and consumption
US11250084B2 (en) Method and system for generating content from search results rendered by a search engine
US9298784B1 (en) Searching inside items
WO2015176415A1 (en) Method and apparatus for providing target information for user
Haapala Analyzing and Improving the Loading Performance of Large-scale Websites on Mobile Devices
US11790019B2 (en) Searching and sharing content with an overlaid interface
Saed et al. Loading time effects: A case study of Malaysian Examination Syndicate web portal

Legal Events

Date Code Title Description
AS Assignment

Owner name: LINKEDIN CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PUCHTA, GEORG;BASAVARAJ, VEENA;LEPPERT, JOHNATHAN;REEL/FRAME:030680/0210

Effective date: 20130430

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LINKEDIN CORPORATION;REEL/FRAME:044746/0001

Effective date: 20171018

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551)

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8