Intelligent version control of files
By determining the file version number based on user interaction, the problem of inaccurate version number in the prior art is solved, and file management efficiency and user interaction experience are improved.
Patent Information
- Application Number
- CN201980021382.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-05-14
- Filing Date
- 2019-03-15
- Publication Date
- 2025-02-18
- Estimated Expiration
- 2039-03-15
AI Technical Summary
The prior art is difficult to accurately identify important version numbers of files, resulting in low file management efficiency, wasted storage space and inconvenient user interaction.
Determine the new version number of a file by measuring user interaction, including generating the version number based on factors such as the time the user edits the file, the number of saves and the amount of editing data, and fine-tune the weights using telemetry data to suit different user scenarios and file types.
It provides more meaningful version numbers that align with file content, improves file storage, retrieval and management efficiency, reduces unintentional input and error selection, and improves productivity and network usage efficiency.
Smart Images

Figure CN111936987B_ABST
Abstract
Description
Technical Field
[0001] The present application relates to version control of files, and in particular to methods and systems for determining version numbers of files based on user activities. Background Art
[0002] A version number is a unique serial number assigned to a file. Version numbers are helpful to users and computer systems for many reasons. For example, version numbers are often used for storage, retrieval, and management of files. Version numbers are also used in several workflows in many different industries. For example, version numbers can be used to help manage files as part of a release process, a software development process, a cloud storage management process, and so on.
[0003] Version control is the process by which a document repository monitors the history of a document and assigns version numbers to each iteration of the document. There are some techniques for generating version numbers for documents. For example, version control can be performed periodically, for example, a document can snap to a new version number every 10 minutes. This type of approach does not really help users or systems identify important milestones in the development of a particular document. This technique is usually out of sync with the amount of work performed on the document, and of course, this technique does not provide a causal relationship between the version number and the content of the document. These shortcomings may lead to other inefficiencies in how computer systems manage documents and a range of inefficiencies that may be caused in a network environment.
[0004] It is with respect to these and other considerations that the disclosure made in this application is presented. Summary of the invention
[0005] The technology disclosed in this application enables the system to provide intelligent version control of files. More specifically, the system disclosed in this application can align to a new version of a file based on one or more measurements of user interactions with the file. For example, the system can create a new version number for a file based on the amount of time the user has spent editing the file, the number of saves that have occurred, and / or the amount of data applied to the edits of the file. The technology disclosed in this application can also use telemetry data to fine-tune the weights applied to data measuring specific types of user activity to provide results that best serve a range of user scenarios and file types.
[0006] By providing version numbers of files based on user interactions, the system can provide more meaningful version numbers that are aligned with the content of the files. In addition, the technology disclosed in this application can improve some efficiencies of systems that rely on version numbers to store, retrieve, and manage files. For example, when the system identifies files with accurate version numbers for associated contexts as described in this application, the system can store fewer files, thereby saving storage space and energy. From the user's perspective, when the system identifies files with accurate version numbers for associated contexts as described in this application, the system can present fewer file iterations to the user, thereby improving the user's interaction with the computer. Improved user interaction can result in a reduction in unintentional input, and on this basis can improve other efficiencies including production efficiency and network usage efficiency.
[0007] This summary is provided to introduce some concepts in a simplified manner, which will be further described in the detailed implementation below. This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. The term "technology", for example, may refer to systems, methods, computer-readable instructions, modules, algorithms, hardware logic, and / or operations as allowed by the context described above and throughout this document. BRIEF DESCRIPTION OF THE DRAWINGS
[0008] Implementations are described with reference to the accompanying drawings. In the drawings, the leftmost digit of a reference number identifies the drawing in which the reference number first appears. The same reference numbers in different drawings indicate similar or identical items. References to individual items of a plurality of items may use reference numbers with one letter in the alphabetical sequence to refer to each individual item. General references to items may use specific reference numbers without the alphabetical sequence.
[0009] Figure 1 is a block diagram of a system for providing intelligent version control of files.
[0010] Figure 2A is a sample data set that can be processed by a system that provides intelligent version control of the files.
[0011] Figure 2B is a list of file iterations and associated version numbers generated by a system that provides intelligent version control of files.
[0012] Figure 2C is a screenshot of a user interface generated by a system that provides intelligent version control of files.
[0013] Figure 3A It is another sample dataset used to generate attribute scores, accumulate scores, and obtain the version number of the file.
[0014] Figure 3Bis a list of file iterations and associated version numbers generated by a system that provides intelligent version control of files.
[0015] Figure 4A is a sample data set illustrating weighted scores generated by a system that provides intelligent version control of files.
[0016] Figure 4B is another list of file iterations and associated version numbers generated by a system that provides intelligent version control of the files.
[0017] Figure 5 is a flow chart illustrating aspects of a routine for implementing the techniques disclosed in this application.
[0018] Figure 6 is a computer architecture diagram showing an illustrative computer hardware and software architecture of a computing system capable of implementing various aspects of the techniques and methods presented in this application.
[0019] Figure 7 is a schematic diagram illustrating a distributed computing environment capable of implementing the techniques and technical aspects presented in this application.
[0020] Figure 8 is a computer architecture diagram illustrating a computing device architecture of a computing device capable of implementing various aspects of the techniques and methods presented in this application.
[0021] Specific implementation method
[0022] Reference now Figure 1 , a system 100 using a sample data set is provided to illustrate aspects of the present disclosure. In this example, the system 100 includes a computing device 101 operating a productivity application 102 for modifying a file 103. In some configurations, the productivity application 102 can display an authoring panel to a user 105. The computing device 101 and the productivity application 102 are configured to save the file 103 in a storage device 106.
[0023] Each time user 105 saves file 103 to storage device 106, an iteration of the file is saved to storage device 106. Each iteration includes edits that have been applied to file 103. In this example, there are 11 iterations of file 103 (referred to herein as iterations 103A-103K, respectively). Computing device 101 may also generate and store metadata associated with each iteration (referred to herein as metadata 110A-110K, respectively). In this example, metadata 110 defines several properties of each iteration of file 103, such as a save timestamp, data indicating the amount of time that edits were applied to the file, and the amount of data of edits applied to the file.
[0024] The amount of time applied to the editing of the file can be based on a range of different types of user activities. In one example, the amount of time applied to the editing of the file can be based on the period of time that the file is opened by an application (such as Word, Excel, Google Docs, Spreadsheets, Photoshop, etc.). In a multi-user editing session, the amount of time can be measured from the beginning of the editing session of the first user who opened the file to the end of the editing session of the last user who closed the file. These examples are provided for illustrative purposes and should not be construed as limiting. Other mechanisms for measuring the amount of time for any type of editing activity of a file can be used with the technology disclosed in this application.
[0025] The amount of data applied to edits to a file can be based on a range of different types of user activity. In one example, the amount of data applied to edits to a file can be the absolute amount of data applied to and deleted from the file. For example, if a user edits a file and adds 4KB of text, the amount of data applied to the edits to the file is 4KB. Additionally, if the user continues to edit the file and deletes 4KB of text, the amount of data applied to the edits to the file should then be 8KB. Therefore, in some configurations, the amount of data applied to the edits to a file is not always indicated by the net change in file size. Measurements of absolute quantities, or counts of cumulative data used to interact with a file, allow the system to measure the level of activity associated with the file. In contrast, a system that only measures changes in file size cannot accurately represent user activity for a file.
[0026] The system can create a new version number for a file based on a variety of factors. For example, the system can create a new version number based on the amount of time a user has spent editing the file, the number of saves that have occurred for the file, and / or the amount of edited data applied to the file. Other factors, such as the frequency of certain activities (e.g., saves per time unit or the amount of data applied to edits per time unit), can also be used to determine when a version number should be generated and applied to one or more iterations of a file.
[0027] To illustrate various aspects of the present disclosure, the following is described and Figure 2A-2B , Figure 3A-3B and Figures 4A-4B Exemplary scenarios are shown in the three examples depicted in FIG. More specifically, Figure 2A-2B An example system is shown that determines a version number of a file when values of one or more attributes meet or exceed one or more thresholds. Figure 3A-3B An example system is shown that determines a version number of a file when a score (eg, a normalized score) for an attribute of the file meets or exceeds one or more thresholds. Figures 4A-4BAn example system is shown that determines a version number of a file when weighted scores of attributes of the file meet or exceed one or more thresholds.
[0028] Reference now Figure 2A-2B , the following description illustrates an embodiment of determining a version number when the value of a file attribute indicates that one or more user activities reach or exceed a threshold. Consider a scenario where file 103 is edited by one or more users. In this example, the file metadata associated with each file iteration includes attributes defining user activities. As each iteration is saved to storage device 106, computing device 101 analyzes the metadata to determine when one or more attributes indicate an activity that reaches or exceeds a threshold.
[0029] For purposes of illustration, several thresholds are provided: a first threshold indicating a time limit of 120 minutes, a second threshold indicating a limit of five (5) saves, and a third threshold indicating a limit of 5 megabytes (MB) of edited data. These thresholds and other thresholds disclosed in this application are provided for illustrative purposes only and should not be construed as limiting. It is understood that other thresholds may be used with the techniques disclosed in this application. In some configurations, the thresholds may vary based on one or more factors, for example, different thresholds may be used based on file type, or different thresholds may be based on user profiles, etc. For example, a system may use a first set of thresholds for word processing documents, a second set of thresholds for presentation documents, a third set of thresholds for spreadsheet documents, a fourth set of thresholds for image files, and the like. Having different thresholds for different file types may increase the accuracy of the generated version number. For example, when it comes to defining thresholds for limits on edited data, a threshold for image files (e.g., many megabytes) may be higher than a threshold for text files (e.g., a few kilobytes).
[0030] Reference Figure 2A In the example shown in , a new version of the document is generated when one or more of the thresholds are reached. As shown, the first version number of the file 103 is generated when the fourth iteration 103D of the file is saved. Specific to the thresholds provided for this example, in response to determining that 13MB of edited content is applied to the first four iterations (103A-103D) of the file and the amount of data exceeds the third threshold of 5MB, the first version number of the file is generated. Once the new version number is determined, the metadata of one or more iterations (103A-103D) can be updated to include the version number. In this example, the metadata of the fourth iteration 103D, the last file saved associated with the new version number, is updated to indicate the new version number (1.0).
[0031] Continuing with this example, computing device 101 generates another version number after the ninth iteration 103I because the number of saves applied to the file after the previous version number has reached a second threshold of five (5) saves. In response, the metadata of the last saved iteration, ninth iteration 103I, associated with this new version number is also updated to indicate the new version number (2.0).
[0032] Further, computing device 101 generates another version number after saving the eleventh iteration 103K because the previous version number has reached a first threshold, such as 120 minutes. In response, metadata of the last file saved, the eleventh iteration 103K, associated with this new version number is updated to indicate the new version number (3.0).
[0033] The generated version numbers can be used for a variety of purposes. For example, version numbers can be used to help users and computers perform one or more workflows, help manage documents during the publishing process, help with file organization in a development environment, and so on. In other examples, version numbers can be used in document management systems and storage systems. In some embodiments, certain iterations of a document can be marked for deletion, while other iterations can be marked for persistent storage. For example, with reference to Figure 2A , the most recent iteration of the storage associated with each version can be marked (e.g., flagged) for long-term storage, while other iterations can be marked for short-term storage. These examples are provided for illustrative purposes and should not be construed as limiting. It will be appreciated that the system can select any subset of iterations associated with a particular version number for a first storage strategy. Additionally, the system can select other subsets of iterations associated with a particular version number for a second storage strategy that marks iterations for deletion with the intent of freeing up storage space on one or more storage devices. As in Figure 2B As shown in the example of , iterations marked for short-term storage can be deleted after a predetermined period of time. Thus, the system can store fewer iterations while maintaining storage of content selected based on the level of user activity.
[0034] Such embodiments can provide several improvements to existing systems, including but not limited to optimization of storage space, reduced network traffic, reduced processing power usage, etc. In addition, the technology disclosed in the present application can also improve user interaction with computing devices. By displaying fewer documents to the user and / or marking documents with accurate version numbers, the user is more likely to select and utilize the files most relevant to the workflow. The display of document iterations based on accurate version numbers showing only iterations can improve user interaction with the computer, and thus reduce the number of unintentional inputs, the number of incorrectly selected iterations, etc.
[0035] Figure 2C An example user interface 201 that can be configured according to version numbers is shown. In this example, some of the iterations are visually highlighted in order to shift the user's focus to salient iterations. In this example, the most recently saved iteration of each version number is highlighted, while other iterations are visually hidden. Such a display can shift the user's attention to the iterations that are most relevant to a particular workflow. In some embodiments, the user interface 201 can include a filtered list in which a subset of iterations such as the most recently saved iterations (103D, 103I, and 301K) of each version are displayed, while other iterations are deleted from the list. The user's interaction with the computer can be improved when the system displays a filtered list that displays iterations marked as high priority and does not display iterations marked as low priority.
[0036] Reference now Figure 3A-3B The following description illustrates an embodiment of determining a version number based on a score 112 generated based on file attributes. In some embodiments, the score 112 can be generated by a process that normalizes attribute values. This embodiment enables a computing device to compare various attributes, for example, the amount of edited data, the time of edit, and the controlled level of accuracy.
[0037] In some embodiments, individual scores indicating the value of a property can be used to generate a cumulative score, and the cumulative score can be compared to one or more thresholds. A version can be created when the cumulative score reaches one or more thresholds.
[0038] exist Figure 3A In the example of , the file metadata 110 includes several attributes for each iteration. Each attribute can be analyzed, and a score can be generated that provides an indication of each attribute. Any suitable processing, including normalization processing, can be used to analyze the attributes and generate the scores. For example, each amount of a data attribute can be characterized by a score ranging from 1 to 10, and each editing session time can be characterized by a score ranging from 1 to 10. In other implementations, each attribute can be scored with a different score range to emphasize certain attributes. For example, each attribute indicating the amount of edited data can be characterized by a score ranging from 1 to 50, and each attribute indicating the editing time can be characterized by a score ranging from 1 to 1000. In addition, as described in more detail below, a machine learning algorithm can be used to adjust the score or each score range as the computing device processes more iterations and scores.
[0039] exist Figure 3AIn the example shown in , an example set of scores 112 is provided. In this example, each score for editing time can be a number in the range of 1 to 10, and each score for the amount of edited data can be a number in the range of 1 to 10. As shown, for the first iteration, the computing device provides a score of one point (1) for editing time of less than 10 minutes, a score of two points (2) for editing time between 10 minutes and 15 minutes, and so on. Similarly, scores can be generated for the amount of edited data applied to the document. In this example, the score for editing data can be one point (1) for an amount less than 600KB, two points (2) for an amount of data in the range of 601KB to 800KB, three points (3) for an amount of data in the range of 801KB to 1.5MB, and so on. As also shown, individual scores can be generated for various ranges of editing time, and individual scores can be generated for each save or several saves.
[0040] These example scores and corresponding ranges are provided for illustrative purposes and should not be construed as limiting. It will be appreciated that any method and any range of scores may be applied to the technology disclosed in this application. In addition, it will be appreciated that the scores and / or corresponding ranges may be linear or non-linear. It will also be appreciated that different sets of scores and ranges for generating the scores may be different for each file type. For example, the score for the amount of edited data may be one point (1) for an amount less than 10MB, two points (2) for an amount of data in the range of 10M to 100MB, and so on. This example may be used for other file types, such as image files and the like.
[0041] like Figure 3A As shown in , several attribute scores 112 can be generated based on the analysis of the file metadata 110. In some embodiments, a version number can be generated when one or more attribute scores reach a threshold. In another embodiment, as Figure 3A As shown in , the attribute scores 112 of the individuals can be used to determine the cumulative score 113 for each iteration 103. Although this example shows an implementation in which the scores are added to determine the cumulative score 113, it can be appreciated that the scores can be processed in different ways to determine the cumulative score 113. For example, the scores of the individuals can be multiplied, summed, or applied to any suitable algorithm to generate the cumulative score 113.
[0042] In this example, a version number is generated when the cumulative score 113 reaches a threshold (also referred to as the "cumulative threshold" in this application). As shown, the first three iterations of the file result in the generation of a first version number when the cumulative score reaches the cumulative threshold, the generation of a second version number when the fourth and fifth iterations reach the cumulative threshold, and the generation of a third version number when the sixth iteration 103F to the tenth iteration 103J reach the cumulative threshold. As shown, in some embodiments, the cumulative score can be reset each time a version number is generated. The cumulative score of the eleventh iteration 103K does not reach the cumulative threshold, so this iteration does not result in the generation of a new version number. Therefore, the eleventh iteration 103K is not associated with a version number.
[0043] As outlined above, one or more actions may cause a version number to be generated. Figure 3B The example shows a possible Figure 3A 103K, is an example of a system that generates a version number. In this example, the most recently saved iteration associated with each version number is marked for long-term storage, while other iterations are marked for short-term storage. In this example, the system retains iterations marked for long-term storage and deletes iterations marked for short-term storage. In some embodiments, the system may retain any iterations that are not associated with a version number. In this example, the most recently saved iteration, the eleventh iteration 103K, is also retained in the storage device 106.
[0044] Reference now Figures 4A-4B The following description illustrates an embodiment of applying weighted values to scores or attribute values to emphasize or de-emphasize certain types of user activities. As outlined above, these embodiments can provide file version numbers optimized for specific workflows or specific types of files.
[0045] For illustrative purposes, example weights are provided: the first weight (editing time weight) is 0.5; the second weight (editing data weight) is 2.5; and the third weight (saving weight) is 4.0. These weights are used to de-emphasize user activities related to editing time, and to emphasize user activities related to editing activities and the number of saves. These weights are provided for illustrative purposes and should not be construed as limiting. It is understood that other weights may be used depending on the file type, applicable workflow, usage patterns of one or more users, applied machine learning algorithms, and the like.
[0046] To illustrate aspects of this embodiment, the sample weights are applied to Figure 3A The scores shown in . Figure 4AThe weighted scores for each iteration are shown. As shown, the score for each edit time is reduced according to the first weight, while the score for edit data and preservation is increased according to the second weight and the third weight. Also as shown, the weighted scores are used to generate a cumulative score, which can be reset each time a version number is generated. In this example, a version number is generated when each cumulative score reaches a threshold.
[0047] Similar to the previous example, one or more actions can be taken based on the file version number. Figure 4B Iterations that may be displayed and / or stored once they have been marked as being associated with one or more generated version numbers are shown. In this example, the system may retain and display the most recent iteration for each version number. Additionally, the system may retain and display iterations that are not associated with a version number. In this example, the last two iterations, e.g., the tenth 103J iteration and the eleventh 103K iteration, have not yet been associated with a version number, and therefore these iterations are retained in the storage device 106.
[0048] As outlined above, one or more techniques, including machine learning algorithms, can be used to adjust scores, weighted scores, and / or thresholds as the computing device processes iterations. For example, a linear regression mechanism can be used to generate scores, weighted scores, or thresholds. Linear regression can refer to a process for modeling the relationship between one attribute of an iteration and one or more other attributes. Different linear regression models can be used to calculate scores, weights, or thresholds. For example, least squares can be used, maximum likelihood estimation can be used, or another method can be used. The linear model can be a simple linear model (e.g., a single predictor variable and a single scalar response variable) or a multivariate regression model (e.g., multiple predictors). These models can also be general linear models, heteroscedastic models, generalized linear models (e.g., Poisson regression, logistic regression, or multinomial logistic regression), Bayesian linear regression, quantile regression, and the like.
[0049] Now go to Figure 5 , aspects of a routine 500 for performing intelligent version control of files are shown and described below. It should be understood that the operations of the methods disclosed in this application are not presented in any particular order, and it is possible and foreseeable that some or all of the operations are performed in an alternative order. For ease of description and illustration, these operations have been presented in the order of demonstration. Operations may be added, omitted, and / or performed simultaneously without departing from the scope of the appended claims.
[0050] It should also be understood that the method shown can be terminated at any time without requiring it to be fully executed. Some or all of the operations of the method and / or substantially equivalent operations can be performed by the execution of computer-readable instructions contained on a computer storage medium as defined below. The term "computer-readable instructions" and its variations as used in the specification and claims are used broadly herein to include routines, applications, application modules, program modules, programs, components, data structures, algorithms, and the like. Computer-readable instructions can be implemented on various system configurations, including single-processor or multi-processor systems, minicomputers, mainframe computers, personal computers, handheld computing devices, microprocessor-based, programmable consumer electronic devices, combinations thereof, and the like.
[0051] Therefore, it should be understood that the logical operations described in this application are implemented as (1) a series of computer-implemented actions or program modules running on a computing system and / or (2) interconnected machine logic circuits or circuit modules in the computing system. The implementation is a choice that depends on the performance and other requirements of the computing system. Therefore, the logical operations described in this application can be variously referred to as states, operations, structured devices, actions, or modules. These operations, structured devices, actions, and modules can be implemented in software, firmware, dedicated digital logic, and any combination thereof.
[0052] For example, the operations of routine 500 described in the present application as being implemented by at least a module that runs the features disclosed in the present application may be a dynamic link library (DLL), a static link library, a function generated by an application programming interface (API), a compiled program, an interpreted program, a script, or any other executable instruction set. Data may be stored in a data structure in one or more memory components. The data may be retrieved from the data structure by addressing a link or reference to the data structure.
[0053] Although the following description refers to the components in the accompanying drawings, it is understood that the operation of routine 500 can be implemented in many other ways. For example, routine 500 can be implemented at least in part by a processor or local circuit of another remote computer. In addition, one or more operations of routine 500 can be implemented alternatively or additionally at least in part by a chip that works alone or with other software modules. In the example described below, one or more modules of the computing system can receive and / or process the data disclosed in the present application. Any service, circuit or application suitable for providing the technology disclosed in the present application can be used in the operation described in the present application.
[0054] refer to Figure 5, routine 500 begins at operation 501, where one or more modules of a computing system receive metadata defining user activity associated with a file. The metadata may include any type of data defining user activity or activities applied to the file, including but not limited to: the amount of time a user or computer has spent editing the file, the number of saves that have occurred, and / or the amount of edited data applied to the file.
[0055] Next, at operation 503, one or more modules of the computing system may determine when one or more thresholds are reached. For example, the computing system may determine, for one or more iterations of the file, when at least one of the amount of data applied to the edit of the file, the number of saves applied to the file, or the amount of time applied to the edit of the file reaches one or more thresholds. These thresholds may be based on the file type or based on one or more applications of the version number. In addition, scores, weighted scores, and / or weights may be applied to each attribute, such as, but not limited to, the amount of data applied to the edit of the file, the number of saves applied to the file, or the amount of time applied to the edit of the file.
[0056] Next, at operation 505, one or more modules of the computing system may generate a version number when one or more thresholds are reached. The version number may be in any format and include any type of text characters, images, encodings, or marks. Next, at operation 507, one or more modules of the computing device may associate the version number with one or more iterations of the file.
[0057] Next, at operation 509, one or more modules of the computing device may modify the display of the iteration based on the version number. Figure 2C As shown in , the list can be filtered and configured to display only certain iterations of the file, such as the most recently saved iteration. At the same time, the list can be filtered and certain iterations can be not displayed, such as iterations that have reached a predetermined age.
[0058] Next, at operation 511, one or more modules of the computing device may modify a storage policy for the iteration based on the version number. As outlined above, some iterations may be marked for long-term storage, such as a first storage policy, while other iterations may be marked for short-term storage, such as a second storage policy. These iterations may be automatically removed from the system based on the policy for the purpose of saving storage space on the system.
[0059] Figure 6 A computer (such as computing device 106 ( Figure 1 )) for additional details of the example computer architecture 600. Thus, Figure 6The computer architecture 600 shown in shows the architecture of a server computer, a mobile phone, a PDA, a smart phone, a desktop computer, a netbook computer, a tablet computer, and / or a laptop computer. The computer architecture 600 can be used to execute any aspect of the software components presented in this application.
[0060] Figure 6 The computer architecture 600 shown in FIG. 6 includes a central processing unit 602 (“CPU”), system memory 604 (including random access memory 606 (“RAM”) and read-only memory (“ROM”) 608), and a system bus 610 that couples memory 604 to CPU 602. A basic input / output system containing basic routines that help transfer information between elements in the computer architecture 600 (such as during the boot process) is stored in ROM 608. The computer architecture 600 also includes a mass storage device 612 for storing an operating system 607, other data, and one or more application programs 102 (such as productivity applications).
[0061] The mass storage device 612 is connected to the CPU 602 through a mass storage controller (not shown) connected to the bus 610. The mass storage device 612 and its associated computer readable media provide non-volatile storage for the computer architecture 600. Although the description of computer readable media contained in this application refers to mass storage devices, such as solid state drives, hard disks, or CD-ROM drives, it should be understood by those skilled in the art that computer readable media can be any available computer storage media or communication media that can be accessed by the computer architecture 600.
[0062] Communication media includes computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier waveform or other transport mechanism, and includes any delivery medium. The term "modulated data signal" refers to one or more signals whose characteristics are changed or set in a manner that encodes information into the signal. By way of example and not limitation, communication media include wired media such as a wired network or a direct wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Any combination of the above should also be included within the scope of computer readable media.
[0063] By way of example and not limitation, computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules or data thereof. For example, computer media include, but are not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid-state memory technology, CD-ROM, digital versatile disk ("DVD"), HD-DVD, BLU-RAY or other optical storage, cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and can be accessed by the computer architecture 600. For the purposes of the claims, the phrases "computer storage medium", "computer readable storage medium" and variations thereof do not include waves, signals and / or other transient and / or intangible communication media per se.
[0064] According to various configurations, the computer architecture 600 can operate in a networked environment using logical connections to remote computers through the network 656 and / or another network (not shown). The computer architecture 600 can be connected to the network 656 via a network interface unit 614 connected to the bus 610. It should be understood that the network interface unit 614 can also be used to connect to other types of networks and remote computer systems. The computer architecture 600 can also include a computer for connecting to a number of other devices, including a keyboard, a mouse, or an electronic stylus (not shown). Figure 6 Similarly, the input / output controller 616 may provide output to a display screen, a printer, or other type of output device (also not shown). Figure 6 ).
[0065] It should be understood that the software components described in this application, when loaded into the CPU 602 and executed, convert the CPU 602 and the entire computer architecture 600 from a general-purpose computing system to a special-purpose computing system customized to assist the functions proposed in this application. The CPU 602 can be composed of any number of transistors or other discrete circuit elements, which can assume any number of states individually or collectively. More specifically, the CPU 602 can operate as a finite state machine in response to the executable instructions contained in the software modules disclosed in this application. These computer executable instructions can convert the CPU 602 by specifying how the CPU 602 transitions between states, thereby converting the transistors or other discrete hardware elements that constitute the CPU 602.
[0066] Encoding the software modules proposed in this application can also convert the physical structure of the computer-readable medium proposed in this application. The specific conversion of the physical structure can depend on various factors in different implementations of this specification. Examples of such factors may include, but are not limited to, the technology used to implement the computer-readable medium, whether the computer-readable medium is characterized as primary storage or secondary storage, etc. For example, if the computer-readable medium is implemented as a semiconductor-based memory, the software disclosed in this application can be encoded on the computer-readable medium by converting the physical state of the semiconductor memory. For example, the software can convert the state of the transistors, capacitors or other discrete circuit elements that constitute the semiconductor memory. The software can also convert the physical state of these components to store data thereon.
[0067] For another example, the computer readable medium disclosed in the present application can be implemented using magnetic or optical technology. In such an implementation, when the software is encoded therein, the software proposed in the present application can convert the physical state of the magnetic or optical medium. These conversions can include changing the magnetic properties of a specific location in a given magnetic medium. These conversions can also include changing the physical properties or characteristics of a specific location in a given optical medium to change the optical properties of these locations. Other conversions of physical media are also possible without departing from the scope and spirit of this specification, and the examples provided above are only used to assist in discussion.
[0068] In view of the above, it should be understood that many types of physical transformations occur in the computer architecture 600 in order to store and execute the software components presented in this application. It should also be understood that the computer architecture 600 may include other types of computing devices, including handheld computers, embedded computer systems, personal digital assistants, and other types of computing devices known to those skilled in the art. It is also contemplated that the computer architecture 600 may not include Figure 6 All components shown may include those not shown in Figure 6 Other components explicitly shown in the Figure 6 A completely different architecture is shown in .
[0069] Figure 7 An exemplary distributed computing environment 700 capable of executing the software components described in this application is depicted. Figure 7 The distributed computing environment 700 shown in the figure can be used to execute any aspects of the software components proposed in this application. For example, the distributed computing environment 700 can be used to execute various aspects of the software components described in this application.
[0070] According to various implementations, the distributed computing environment 700 includes a computing environment 702 that operates on, communicates with, or is part of a network 704. Figure 6 As described, network 704 may be or include network 656. Network 704 may also include various access networks. One or more client devices 706A-706N (hereinafter collectively and / or generally referred to as "clients 706" and also referred to herein as computing devices 106) may communicate with each other via network 704 and / or other connections ( Figure 7 706N. It should be understood that any number of clients 706 may communicate with the computing environment 702. Figure 5 and 7 Two example computing architectures are shown and described for the client 706. It should be understood that the illustrated client 706 and the computing architectures shown and described in this application are illustrative and should not be construed as limiting in any way.
[0071] In the illustrated configuration, computing environment 702 includes application server 708, data storage 710 and one or more network interfaces 712. According to various implementations, the functions of application server 708 can be provided by one or more server computers that perform or communicate with network 704 as part of the network. Application server 708 can host various services, virtual machines, portal websites and / or other resources. In the illustrated configuration, application server 708 hosts one or more virtual machines 714 for hosting applications or other functions. According to various implementations, virtual machine 714 hosts one or more applications and / or data for performing intelligent version control of files. It should be understood that this configuration is illustrative and should not be interpreted as limiting in any way. Application server 708 also hosts one or more portal websites, link pages, websites and / or other information ("portal websites") 716 or provides access to them.
[0072] According to various implementations, the application server 708 also includes one or more mailbox services 718 and one or more message services 720. The mailbox service 718 may include an electronic mail ("email") service. The mailbox service 718 may also include various personal information management ("PIM") and presence services, including, but not limited to, calendar services, contact management services, collaboration services, and / or other services. The message service 720 may include, but is not limited to, an instant messaging service, a chat service, a forum service, and / or other communication services.
[0073] The application server 708 may also include one or more social networking services 722. The social networking service 722 may include various social networking services, including, but not limited to, services for sharing or publishing status updates, instant messages, links, photos, videos and / or other information; services for commenting on articles, products, blogs or other resources or expressing interest in them; and / or other services. In some configurations, the social networking service 722 is provided by or includes Facebook's social networking service, LinkedIn's professional network service, MySpace's social networking service, Foursquare's geographic network service, YAMMER's office colleague network service, etc. In other configurations, the social networking service 722 is provided by other services, sites and / or suppliers that may or may not be explicitly referred to as social network providers. For example, some websites allow users to interact with each other through email, chat services, and / or other means during various activities and / or contexts (such as reading published articles, commenting on goods or services, publishing, collaboration, games, etc.). Examples of such services include, but are not limited to, WINDOWS LIVE services and XBOX LIVE services from Microsoft Corporation in Redmond, Washington. Other servers are also possible and expected.
[0074] The social networking service 722 may also include comment, blog and / or microblogging services. Examples of such services include, but are not limited to, YELP comment service, KUDZU review service, OFFICETALK enterprise microblogging service, TWITTER messaging service, Google Buzz service and / or other services. It should be understood that the above list of services is not exhaustive, and many additional and / or alternative social networking services 722 are not mentioned in this application for the sake of brevity. Thus, the above configuration is illustrative and should not be interpreted as limiting in any way. According to various implementations, the social networking service 722 may host one or more applications and / or software modules for providing the functions described in this application (such as performing intelligent version control of files). For example, any of the application servers 708 may communicate or facilitate the functions and features described in this application. For example, a social networking application, mail client, messaging client or browser running on a mobile phone or any other client 706 may communicate with the network service 722 and assist (even partially) as described above with respect to Figure 7 Any device or service described in this application can be used to supplement data resources, including email servers, storage servers, etc.
[0075] like Figure 7As shown in FIG. 7 , the application server 708 may also host other services, applications, portals, and / or other resources (“other resources”) 724. Other resources 724 may include, but are not limited to, document sharing, rendering, or any other functions. It is therefore understood that the computing environment 702 may provide the integration of the concepts and technologies disclosed in this application with various mailboxes, messages, social networks, and / or other services or resources.
[0076] As mentioned above, the computing environment 702 may include a data store 710. According to various implementations, the functionality of the data store 710 is provided by one or more databases running on or in communication with the network 704. The functionality of the data store 710 may also be provided by one or more server computers configured to host data for the computing environment 702. The data store 710 may include, host, or provide one or more real or virtual data stores 726A-726N (hereinafter collectively and / or generally referred to as "data stores 726"). The data store 726 is configured to host data used or created by the application server 708 and / or other data. Although Figure 7 Not shown, data store 726 may also host or store web documents, Word documents, presentation documents, data structures, algorithms executed by the recommendation engine, and / or other data used by any application or another module. Aspects of data store 726 may be associated with a service for storing files.
[0077] The computing environment 702 can communicate with or be accessed by a network interface 712. The network interface 712 may include various types of network hardware and software to support communications between two or more computing devices (including, but not limited to, computing devices and servers). It should be understood that the network interface 712 may also be used to connect to other types of networks and / or computer systems.
[0078] It should be understood that the distributed computing environment 700 described in the present application can provide aspects of the software elements described in the present application using any number of virtual computing resources and / or other distributed computing functions that can be configured to perform aspects of the software components disclosed in the present application. According to various implementations of the concepts and technologies disclosed in the present application, the distributed computing environment 700 provides the software functions described in the present application as a service to computing devices. It should be understood that computing devices can include real or virtual machines, including but not limited to server computers, network servers, personal computers, mobile computing devices, smart phones and / or other devices. Similarly, the innovation is that various configurations of the concepts and technologies disclosed in the present application enable any device to be configured to access the distributed computing environment 700 to utilize the functions described in the present application to provide the technology described in the present application. In one specific example, as outlined above, the technology described in the present application can be implemented at least in part by a web browser application that is connected to a web browser. Figure 7 The application server 708 works in collaboration.
[0079] Now go to Figure 8 , an exemplary computing device architecture 800 of a computing device capable of executing the various software components described in this application to perform intelligent version control of files. The computing device architecture 800 is applicable to computing devices that facilitate mobile computing due in part to form factors, wireless connectivity, and / or battery-powered operation. In some configurations, the computing device includes, but is not limited to, mobile phones, tablet devices, notebook devices, portable video game devices, etc. The computing device architecture 800 can be applied to Figure 1 and Figure 7 Furthermore, aspects of computing device architecture 800 may be applicable to conventional desktop computers, portable computers (e.g., phones, laptops, notebooks, ultrabooks, and netbooks), server computers, and other computing devices such as those described in the present application. Figure 1 and Figure 7 For example, the single-touch and multi-touch aspects disclosed below in this application can be applied to a desktop computer that employs a touch screen or some other touch-enabled device (such as a touch trackpad or a touch mouse).
[0080] exist Figure 8 The computing device architecture 800 shown in FIG. 8 includes a processor 802, a memory component 804, a network connection component 806, a sensor component 808, an input / output component 810, and a power supply component 812. In the configuration shown, the processor 802 communicates with the communication memory component 804, the network connection component 806, the sensor component 808, the input / output ("I / O") component 810, and the power supply component 812. Figure 8There is no shown connection between the individual components shown in the diagram, but these components can interact to perform the device functions. In some configurations, the components are arranged to communicate via one or more buses (not shown).
[0081] The processor 802 includes a central processing unit ("CPU") configured to process data, execute computer-executable instructions of one or more application programs, and communicate with other components of the computing device architecture 800 to perform the various functions described herein. The processor 802 may be used to execute aspects of the software components presented herein, particularly those that employ, at least in part, touch input.
[0082] In some configurations, the processor 802 includes a graphics processing unit (“GPU”) configured to accelerate operations performed by the CPU, including, but not limited to, operations performed by executing general scientific and / or engineering computing applications, as well as graphics-intensive computing applications such as high-resolution video (e.g., 720P, 1080P, and higher resolutions), video games, three-dimensional (“3D”) modeling applications, and the like. In some configurations, the processor 802 is configured to communicate with a discrete GPU (not shown). In any case, the CPU and GPU can be configured according to a co-processing CPU / GPU computing model, in which sequential portions of an application running on the CPU and computationally intensive portions are accelerated by the GPU.
[0083] In some configurations, the processor 802 is a system on a chip ("SoC") or is included therein with one or more other components described below in this application. For example, the SoC may include the processor 802, a GPU, one or more network connection components 806, and one or more sensor components 808. In some configurations, the processor 802 is manufactured in part using package-on-package ("PoP") integrated circuit packaging technology. The processor 802 can be a single-core or multi-core processor.
[0084] The processor 802 may be created based on an ARM architecture available under license from ARM, Inc., Cambridge, England. Alternatively, the processor 802 may be created based on an x86 architecture, such as available from Intel Corporation, Mountain View, California. In some configurations, the processor 802 is a SNAPDRAGON SoC available from Qualcomm, Inc., San Diego, California, a TEGRA SoC available from NVIDIA, Inc., Santa Clara, California, a HUMMINGBIRD SoC available from Samsung, Seoul, South Korea, an Open Multimedia Application Platform ("OMAP") available from Texas Instruments, Inc., Dallas, Texas, a customized version of any of the above SoCs, or a proprietary SoC.
[0085] The memory component 804 includes random access memory (“RAM”) 814 / read only memory (“ROM”) 816 / integrated storage memory (“integrated storage”) 818, and removable storage memory (“removable storage”) 820. In some configurations, the RAM 814 or a portion thereof, the ROM 816 or a portion thereof, and / or some combination of the RAM 814 and ROM 816 are integrated at the processor 802. In some configurations, the ROM 816 is configured to store firmware, an operating system or a portion thereof (e.g., an operating system kernel), and / or a boot loader to load the operating system kernel from the integrated storage 818 and / or the removable storage 820.
[0086] The integrated storage 818 may include a solid-state memory, a hard disk, or a combination of a solid-state memory and a hard disk. The integrated storage 818 may be soldered or otherwise connected to a logic circuit board to which the processor 802 and other components described in the present application may also be connected. In this way, the integrated storage 818 is integrated into the computing device. The integrated storage 818 is configured to store an operating system or a portion thereof, application programs, data, and other software components described in the present application.
[0087] Removable storage 820 can comprise solid state memory, hard disk or the combination of solid state memory and hard disk.In some configurations, removable storage 820 is provided to replace integrated storage 818.In other configurations, removable storage 820 can be provided as additional optional storage.In some configurations, removable storage 820 is logically combined with integrated storage 818 so that total available storage can be used as total combined storage capacity.In some configurations, the total combined capacity of integrated storage 818 and removable storage 820 is displayed to the user, rather than the storage capacity respectively of integrated storage 818 and removable storage 820.
[0088] The removable storage 820 is configured to be inserted into a removable storage memory slot (not shown), or other means through which the removable storage 820 can be inserted and secured to facilitate connections over which the removable storage 820 can communicate with other components of the computing device, such as the processor 802. The removable storage 820 can be embodied in various memory card formats, including, but not limited to, PC cards, CF cards, memory sticks, secure digital ("SD") cards, miniSD cards, microSD cards, universal integrated circuit cards ("UICC") (e.g., subscriber identity modules ("SIM") or universal SIM ("USIM")), proprietary formats, and the like.
[0089] It is understood that one or more memory components 804 can store operating systems. According to various configurations, operating systems include, but are not limited to, WINDOWS MOBILE OS from Microsoft Corporation of Redmond, Washington, WINDOWS PHONE OS from Microsoft Corporation, WINDOWS from Microsoft Corporation, PALM WEBOS from Hewlett-Packard Company of Palo Alto, California, BLACKBERRYOS from Research In Motion Ltd. of Waterloo, Ontario, Canada, IOS from Apple Inc. of Cupertino, California, and ANDROID OS from Google Inc. of Mountain View, California. Other operating systems are also contemplated.
[0090] The network connection component 806 includes a wireless wide area network component ("WWAN component") 822, a wireless local area network component ("WLAN component") 824, and a wireless personal area network component ("WPAN component") 826. The network connection component 806 facilitates communication to and from a network 856 or another network, which may be a WWAN, WLAN, or WPAN. Although only network 856 is shown, the network connection component 806 may facilitate communication with multiple networks, including networks 856, ... Figure 6 For example, the network connection component 806 can facilitate simultaneous communication with multiple networks via one or more of a WWAN, a WLAN, or a WPAN.
[0091] The network 856 may be or may include a WWAN, such as a mobile telecommunication network that provides voice and / or data services to computing devices employing the computing device architecture 800 via the WWAN component 822 using one or more mobile communication technologies. The mobile telecommunication network telecommunication technologies may include, but are not limited to, Global System for Mobile Communications (“GSM”), Code Division Multiple Access (“CDMA”) ONE, CDMA7000, Universal Mobile Telecommunications System (“UMTS”), Long Term Evolution (“LTE”), and Worldwide Interoperability for Microwave Access (“WiMAX”). In addition, the network 856 may utilize various channel access methods (which may or may not be used by the above standards), including but not limited to Time Division Multiple Access (“TDMA”), Frequency Division Multiple Access (“FDMA”), CDMA, Wideband CDMA (“W-CDMA”), Orthogonal Frequency Division Multiplexing (“OFDM”), Space Division Multiple Access (“SDMA”), and the like. Data communications may be provided using General Packet Radio Service ("GPRS"), Enhanced Data Rates for GSM Evolution ("EDGE"), the High Speed Packet Access ("HSPA") family of protocols including High Speed Downlink Packet Access ("HSDPA"), Enhanced Uplink ("EUL") or otherwise known as High Speed Uplink Packet Access ("HSUPA"), Evolved HSPA ("HSPA+"), LTE, and various other current and future wireless data access standards. Network 856 may be configured to provide voice and / or data communications using any combination of the above technologies. Network 856 may be configured or adapted to provide voice and / or data communications in accordance with next generation technologies.
[0092] In some configurations, the WWAN component 822 is configured to provide dual multi-mode connections to the network 856. For example, the WWAN component 822 can be configured to provide a connection to a network 856 that provides services via GSM and UMTS technologies, or via some other technology combination. Alternatively, multiple WWAN components 822 can be used to perform these functions, and / or provide additional functionality to support other non-compatible technologies (i.e., those that cannot be supported by a single WWAN component). The WWAN component 822 can assist in similar connections to multiple networks (e.g., a UMTS network and an LTE network).
[0093] The network 856 can be a WLAN operating in accordance with one or more Institute of Electrical and Electronics Engineers ("IEEE") 802.11 standards, such as IEEE 802.11a, 802.11b, 802.11g, 802.11n and / or future 802.11 standards (collectively referred to as WI-FI in this application). Draft 802.11 standards are also contemplated. In some configurations, the WLAN is implemented using one or more wireless WI-FI access points. In some configurations, one or more of the wireless WI-FI access points is another computing device having a connection to a WWAN used as a WI-FI hotspot. The WLAN component 824 is configured to connect to the network 856 via a WI-FI access point. Such a connection can be protected by various encryption techniques, including, but not limited to, WI-FI Protected Access ("WPA"), WPA2, Wired Equivalent Privacy ("WEP"), and the like.
[0094] The network 856 may be a WPAN operating in accordance with the Infrared Data Association ("IrDA"), Bluetooth, wireless Universal Serial Bus ("USB"), Z-Wave, ZIGBEE, or some other short-range wireless technology. In some configurations, the WPAN component 826 is configured to facilitate communication with other devices (such as peripherals, computers, or other computing devices) via the WPAN.
[0095] Sensor component 808 includes a magnetometer 828, an ambient light sensor 830, a proximity sensor 832, an accelerometer 834, a gyroscope 836, and a global positioning system sensor ("GPS sensor") 838. It is contemplated that other sensors may also be incorporated into computing device architecture 800, such as, but not limited to, a temperature sensor or a shock detection sensor.
[0096] Magnetometer 828 is configured to measure the strength and direction of the magnetic field. In some configurations, magnetometer 828 provides measurements to a compass application stored in one of storage components 804 to provide accurate directions to the user in a reference frame including cardinal directions (north, south, east and west). Similar measurements can be provided to navigation applications including compass components. Other uses of the measurements obtained by magnetometer 828 are also contemplated.
[0097] The ambient light sensor 830 is configured to measure ambient light. In some configurations, the ambient light sensor 830 provides measurements to an application stored in one of the storage components 804 to automatically adjust the brightness of the display (described below) to compensate for low light and high light environments. Other uses of the measurements obtained by the ambient light sensor 830 are also contemplated.
[0098] The proximity sensor 832 is configured to detect the presence of an object or thing approaching the computing device without direct contact. In some configurations, the proximity sensor 832 detects the presence of a user's body (e.g., the user's face) and provides this information to an application stored in one of the memory components 804, which uses the proximity information to enable or disable some functions of the computing device. For example, a phone application can automatically disable the touch screen (described below) in response to receiving the proximity information so that the user's face does not inadvertently end a call or enable / disable other functions in the phone application during the call. Other uses of the proximity detected by the proximity sensor 832 are also contemplated.
[0099] The accelerometer 834 is configured to measure intrinsic acceleration. In some configurations, the output from the accelerometer 834 is used by an application as an input mechanism for controlling some functions of the application. For example, the application can be a video game in which a character, a portion thereof, or an object is moved or otherwise manipulated in response to input received via the accelerometer 834. In some configurations, the output from the accelerometer 834 is provided to the application for switching between landscape and portrait modes, calculating coordinate acceleration, or detecting falls. Other uses of the accelerometer 834 are also contemplated.
[0100] The gyroscope 836 is configured to measure and maintain orientation. In some configurations, the output from the gyroscope 836 is used by the application as an input mechanism for controlling some functions of the application. For example, the gyroscope 836 can be used to accurately identify movement within the 3D environment of a video game application or other application. In some configurations, the application utilizes the output from the gyroscope 836 and the accelerometer 834 to enhance the control of some functions of the application. Other uses of the gyroscope 836 are also contemplated.
[0101] The GPS sensor 838 is configured to receive signals from GPS satellites for calculating a position. The position calculated by the GPS sensor 838 can be used by any application that needs or benefits from the position information. For example, the position calculated by the GPS sensor 838 can be used with a navigation application to provide a direction from the position to the destination or from the destination to the position. In addition, the GPS sensor 838 can be used to provide location information to external location-based services (such as E911 services). The GPS sensor 838 can obtain location information generated by one or more network connection components 806 via WI-FI, WIMAX and / or cellular triangulation positioning technology to help the GPS sensor 838 obtain a position fix. The GPS sensor 838 can also be used in an assisted GPS ("A-GPS") system. The GPS sensor 838 can also work in conjunction with other components (such as a processor 802) to generate positioning data for the computing device 800.
[0102] The I / O component 810 includes a display 840, a touch screen 842, a data I / O interface component ("data I / O") 844, an audio I / O interface component ("audio I / O") 846, a video I / O interface component ("video I / O") 848, and a camera 850. In some configurations, the display 840 and the touch screen 842 are combined. In some configurations, two or more of the data I / O component 844, the audio I / O component 846, and the video I / O component 848 are combined. The I / O component 810 may include a discrete processor configured to support the various interfaces described below, or may include processing functionality built into the processor 802.
[0103] The display 840 is an output device configured to present information in a visual form. Specifically, the display 840 can present graphical user interface ("GUI") elements, text, images, videos, notifications, virtual buttons, virtual keyboards, message data, Internet content, device status, time, date, calendar data, preferences, map information, location information, and any other information that can be presented in a visual form. In some configurations, the display 840 is a liquid crystal display ("LCD") utilizing any active or passive matrix technology and any backlight technology (if used). In some configurations, the display 840 is an organic light emitting diode ("OLED") display. Other display types are contemplated.
[0104] The touch screen 842, also referred to herein as a "touch-enabled screen," is an input device configured to detect the presence and location of a touch. The touch screen 842 may be a resistive touch screen, a capacitive touch screen, a surface acoustic wave touch screen, an infrared touch screen, an optical imaging touch screen, a dispersive signal touch screen, a sound pulse recognition touch screen, or may utilize any other touch screen technology. In some configurations, the touch screen 842 is incorporated on top of the display 840 as a transparent layer to enable a user to interact with an object or other information presented on the display 840 using one or more touches. In other configurations, the touch screen 842 is a touch pad incorporated on a surface of a computing device that does not include the display 840. For example, a computing device may have a touch screen incorporated on top of the display 840 and a touch pad on a surface directly opposite the display 840.
[0105] In some configurations, the touch screen 842 is a single-touch touch screen. In other configurations, the touch screen 842 is a multi-touch touch screen. In some configurations, the touch screen 842 is configured to detect discrete touches, single-touch gestures, and / or multi-touch gestures. For convenience, these are collectively referred to as gestures in this application. Several gestures will now be described. It should be understood that these gestures are illustrative and are not intended to limit the scope of the appended claims. In addition, the described gestures, additional gestures, and / or alternative gestures can be implemented in software used with the touch screen 842. In this way, developers can create gestures dedicated to specific applications.
[0106] In some configurations, the touch screen 842 supports a click gesture, wherein a user clicks the touch screen 842 once on an item presented on the display 840. The click gesture can be used for various reasons, including, but not limited to, opening or launching any item that the user clicks on. In some configurations, the touch screen 842 supports a double-click gesture, wherein a user clicks the touch screen 842 twice on an item presented on the display 840. The double-click gesture can be used for various reasons, including, but not limited to, zooming in or out in stages. In some configurations, the touch screen 842 supports a click and hold gesture, wherein a user clicks the touch screen 842 and maintains contact for at least a predefined time. The click and hold gesture can be used for various reasons, including, but not limited to, opening a context-specific menu.
[0107] In some configurations, the touch screen 842 supports a drag gesture, wherein the user places a finger on the touch screen 842 and maintains contact with the touch screen 842 while moving the finger on the touch screen 842. The drag gesture can be used for various reasons, including, but not limited to, moving across a screen, image, or menu at a controlled speed. Multi-finger drag gestures are also contemplated. In some configurations, the touch screen 842 supports a flick gesture, wherein the user slides a finger in the direction in which the screen is to be moved. The flick gesture can be used for various reasons, including, but not limited to, scrolling horizontally or vertically across a menu or web page. In some configurations, the touch screen 842 supports a pinch and spread gesture, wherein the user makes a pinching motion with two fingers (e.g., thumb and index finger) on the touch screen 842, or moves the two fingers apart. The pinch and spread gesture can be used for various reasons, including, but not limited to, gradually zooming in or out of a website, map, or photo.
[0108] Although the above gestures have been described with reference to the use of one or more fingers for performing the gestures, other appendages (such as toes) or objects (such as a stylus) may be used to interact with the touch screen 842. As such, the above gestures should be understood to be illustrative and should not be construed as limiting in any way.
[0109] The data I / O interface component 844 is configured to facilitate input of data to and output of data from the computing device. In some configurations, the data I / O interface component 844 includes a connector configured to provide a wired connection between the computing device and a computer system (e.g., for the purpose of synchronous operation). The connector can be a dedicated connector or a standard connector, such as USB, micro-USB, mini-USB, etc. In some configurations, the connector is a base connector for docking the computing device with another device, such as a docking station, an audio device (e.g., a digital music player), or a video device.
[0110] The audio I / O interface component 846 is configured to provide audio input and / or output capabilities to the computing device. In some configurations, the audio I / O interface component 846 includes a microphone configured to collect audio signals. In some configurations, the audio I / O interface component 846 includes a headphone jack configured to provide a connection for headphones or other external speakers. In some configurations, the audio I / O interface component 846 includes a speaker for the output of audio signals. In some configurations, the audio I / O interface component 846 includes an optical audio cable.
[0111] The video I / O interface component 848 is configured to provide video input and / or output capabilities to the computing device. In some configurations, the video I / O interface component 848 includes a video connector configured to receive video as input from another device (e.g., a video media player such as a DVD or Blu-ray player) or send video as output to another device (e.g., a monitor, a television, or some other external display). In some configurations, the video I / O interface component 848 includes a high-definition multimedia interface ("HDMI"), mini-HDMI, micro-HDMI, display port, or a dedicated connector to input / output video content. In some configurations, the video I / O interface component 848 or a portion thereof is combined with the audio I / O component 846 or a portion thereof.
[0112] The camera 850 may be configured to capture still images and / or video. The camera 850 may utilize a charge coupled device ("CCD") or a complementary metal oxide semiconductor ("CMOS") image sensor to capture images. In some configurations, the camera 850 includes a flash to help take pictures in low light environments. Settings for the camera 850 may be implemented as hardware or software buttons.
[0113] Although not shown, one or more hardware buttons may also be included in the computing device architecture 800. The hardware buttons may be used to control some operational aspects of the computing device. The hardware buttons may be dedicated buttons or multi-purpose buttons. The hardware buttons may be mechanical or sensor-based.
[0114] The power supply assembly 812 shown includes one or more batteries 852, which can be connected to a battery fuel gauge 854. The batteries 852 can be rechargeable or disposable. Types of rechargeable batteries include, but are not limited to, lithium polymer, lithium ion, nickel cadmium, and nickel metal hydride batteries. Each battery 852 can be composed of one or more cells.
[0115] The battery gauge 854 can be configured to measure battery parameters such as current, voltage, and temperature. In some configurations, the battery gauge 854 is configured to measure the effects of the battery's discharge rate, temperature, age, and other factors to predict the remaining life within a certain percentage of error. In some configurations, the battery gauge 854 provides measurements to an application that is configured to use the measurements to present useful power management data to the user. The power management data can include one or more of the percentage of battery used, the percentage of battery remaining, the battery status, the time remaining, the remaining capacity (e.g., in watt-hours), the current consumption, and the voltage.
[0116] The power supply assembly 812 may also include a power connector, which may be combined with one or more of the aforementioned I / O assemblies 810. The power supply assembly 812 may interface with an external power system or charging device via the I / O assembly.
[0117] Finally, although various configurations have been described using language specific to structural features and / or methodological acts, it should be understood that the subject matter defined in the accompanying representations is not necessarily limited to the specific features or acts described. Rather, these specific features and acts are disclosed as example forms of implementing the claimed subject matter.
Claims
1. A method for determining a version number of a file based on user activity, comprising: receiving metadata defining a user activity associated with a file, the metadata defining at least one of an amount of data of edits applied to the file, a number of saves applied to the file, or an amount of time of edits applied to the file, wherein each time a user applies a save to the file, an iteration of the file is saved to a storage device; applying weights to emphasize or de-emphasize types of user activity to: an amount of data of edits applied to the file, a number of saves applied to the file, and an amount of time of edits applied to the file; determining, for one or more iterations of the file, that at least one of the amount of data applied to the edits to the file, the number of saves applied to the file, or the amount of time applied to the edits to the file reaches one or more thresholds; responsive to determining, for one or more iterations of the file, that at least one of the amount of data applied to the edits to the file, the number of saves applied to the file, or the amount of time applied to the edits to the file reaches the one or more thresholds, determining a version number for the one or more iterations of the file; associating the version number with the one or more iterations of the file; and selecting a first subset of iterations of the one or more iterations of the file for long term storage, wherein the first subset of iterations comprises most recently saved iterations; and A second subset of iterations of the one or more iterations of the file is selected for short-term storage, wherein the second subset of iterations is marked for deletion with the purpose of freeing storage space on one or more storage devices.
2. The method according to claim 1, further comprising: selecting a first subset of iterations of the one or more iterations of the file, wherein the first subset of iterations includes a most recently saved iteration associated with the version number; selecting a second subset of iterations of the one or more iterations of the file; and An iteration list including the first iteration subset is displayed, wherein the second iteration subset is displayed as a graphical object or text that is visually hidden or omitted from the iteration list.
3. The method according to claim 1, wherein: The one or more thresholds are based on the type of file.
4. The method according to claim 1, further comprising: generating a number of scores based on the amount of data, the number of saves, and the amount of time; A cumulative score is generated based on the several scores, wherein determining that at least one of the amount of data, the number of saves, or the amount of time reaches the one or more thresholds includes: determining that the cumulative score reaches the one or more thresholds, and wherein the version number is determined in response to determining that the cumulative score reaches the one or more thresholds.
5. The method according to claim 4, further comprising: A weight is applied to at least one of the scores for the purpose of emphasizing or de-emphasizing a type of user activity.
6. A system for determining a version number of a file based on user activity, comprising: one or more processing units; as well as A computer-readable medium having computer-executable instructions encoded thereon, the computer-executable instructions causing the one or more processing units to perform a method comprising: receiving metadata defining a user activity associated with a file, the metadata defining at least one of an amount of data of edits applied to the file, a number of saves applied to the file, or an amount of time of edits applied to the file, wherein each time a user applies a save to the file, an iteration of the file is saved to a storage device; applying weights to emphasize or de-emphasize types of user activity to: an amount of data of edits applied to the file, a number of saves applied to the file, and an amount of time of edits applied to the file; determining, for one or more iterations of the file, that at least one of the amount of data applied to the edits to the file, the number of saves applied to the file, or the amount of time applied to the edits to the file exceeds one or more thresholds; responsive to determining that at least one of the amount of data applied to the edit of the file, the number of saves applied to the file, or the amount of time applied to the edit of the file exceeds the one or more thresholds, determining a version number of the one or more iterations of the file; associating the version number with the one or more iterations of the file; selecting a first subset of iterations of the one or more iterations of the file for long term storage, wherein the first subset of iterations comprises most recently saved iterations; and A second subset of iterations of the one or more iterations of the file is selected for short-term storage, wherein the second subset of iterations is marked for deletion with the purpose of freeing storage space on one or more storage devices.
7. The system according to claim 6, wherein: The method further comprises displaying an iteration list including the first iteration subset, wherein the second iteration subset is displayed as a visually hidden graphical element or the second iteration subset is filtered out of the iteration list.
8. The system according to claim 6, wherein: The one or more thresholds are based on the type of file.
9. The system according to claim 6, wherein: The method further comprises: generating a number of scores based on the amount of data, the number of saves, and the amount of time; A cumulative score is generated based on the several scores, wherein determining that at least one of the amount of data, the number of saves, or the amount of time reaches the one or more thresholds includes: determining that the cumulative score reaches the one or more thresholds, and wherein the version number is determined in response to determining that the cumulative score reaches the one or more thresholds.
10. The system according to claim 9, wherein: The method further includes applying a weight to at least one of the scores for the purpose of emphasizing or de-emphasizing a type of user activity.
Citation Information
Patent Citations
History-based archive management
US20140032502A1
Memory conserving versioning of an electronic document
US20170185573A1