text:
Methods and systems automatically download computer software components from a computer network like the Internet or an intranet. The methods and systems can be used to provide dynamic or interactive multimedia components in HTML documents with HTML <OBJECT> tags. The HTML <OBJECT> tags can contain parameters including uniform resource locators (URLs) which reference dynamic or interactive multimedia components on remote computers. Network browsers and other applications can obtain computer software components from a computer network like the Internet or an intranet in a uniform, portable, architecture-neutral, robust manner. The computer software components obtained can be used to provide a variety of new multimedia functionality to an application program.
1. A method of automatically downloading software on a local device from one or more computers, the local device and the one or more computers being connected to a computer network, the method comprising:
encountering an invocation of the software within a web page via an HTML <OBJECT> tag, wherein the software comprises an ACTIVEX control and the invocation comprises an identity of the software and a version indication of the software, wherein an additional <OBJECT> tag within the web page can be used to invoke a software component other than an ACTIVEX control; and
responsive to encountering an invocation of software, downloading the software from the one or more remote computers according to the identity and version indication, wherein the version indication indicates to obtain a latest version of the software without specifying a particular version.
2. The method of
3. The method of
4. The method of
invoking the software.
5. The method of
automatically installing the software.
6. The method of
7. The method of
8. The method of
9. The method of
10. The method of
locating the software via a network search path.
11. The method of
12. The method of
13. The method of
14. The method of
15. One or more computer-readable media having computer-executable instructions for performing the method of
16. A method of invoking software, the method comprising:
encountering an invocation of the software within a web page via an HTML <OBJECT> tag, wherein the software comprises an ACTIVEX control and the invocation comprises an identity of the software and a version indication of the software, wherein an additional <OBJECT> tag within the web page can be used to invoke a software component other than an ACTIVEX control, and wherein the version indication indicates to obtain a latest version of the software without specifying a particular version;
responsive to encountering the invocation of the software, determining whether there is a version of the software existing on a local device that satisfies the version indication;
if there is a version of the software existing on the local device that satisfies the version indication, invoking the version of the software existing on the local device that satisfies the version indication; and
if there is not a version of the software existing on the local device that satisfies the version indication, downloading the software from one or more remote computers according to the identity and version indication.
17. A computer-readable medium comprising instructions containing an invocation of software via an HTML <OBJECT> tag within a web page, comprising:
an identity of the software, wherein the software comprises an ACTIVEX control, and wherein an additional <OBJECT> tag within the web page can be used to invoke a software component other than an ACTIVEX control; and
a version indicator for the software;
whereby, when encountered by a local device, the invocation initiates execution of a version of the software according to the version indicator, and, if a version of the software according to the version indicator is not available on the local device, downloading the software to the local device prior to execution, wherein the version indication indicates to obtain a latest version of the software without specifying a particular version.
18. The computer-readable medium of
This application is a continuation of U.S. patent application Ser. No. 10/027,209, to Parthasarathy et al., entitled "Automatic Software Downloading From a Computer Network," filed Dec. 21, 2001, which is a continuation of U.S. patent application No. 09/436,185, to Parthasarathy et al., entitled, "Automatic Software Downloading From a Computer Network," filed Nov. 8, 1999, now U.S. Pat. No. 6,347,398, which is a continuation of U.S. patent application No. 08/764,040, to Parthasarathy et al., entitled "Automatic Software Downloading From a Computer Network," filed Dec. 12, 1996, abandoned, all of which are hereby incorporated herein by reference.
The technical field relates to obtaining software via a computer network.
The Internet is a worldwide network of cooperating computer networks. Connected to the Internet are thousands of individual computers, each with a variety of application programs. From a user's point of view, access to the Internet and its services typically are accomplished by invoking a network application program (e.g., a network browser). The network application program acts as an interface between the user and the Internet. Network application programs are typically "client" applications that accept commands from the user and obtain Internet data and services by sending requests to "server" applications on other computers at other locations on the Internet.
There are many types of client network applications known in the art including network browsers such as the MICROSOFT INTERNET EXPLORER software by Microsoft Corporation of Redmond, Wash., the NETSCAPE NAVIGATOR software by Netscape Communications of Mountain View, Calif., and the MOSAIC software by National Center for Super Computer Applications (NCSA) in Champaign-Urbana, Ill. These network browsers send network requests via the File Transfer Protocol (FTP), Simple Mail Transfer Protocol (SMTP), Hyper Text Transfer Protocol (HTTP), Gopher document protocol and others. The network requests are used to exchange data with computer networks such as the Internet.
HTTP is a protocol used to access data on the World Wide Web. The World Wide Web is an information service on the Internet containing documents created in the Hyper Text Markup Language (HTML). HTML allows embedded "links" to point to other data or documents, which may be found on the local computer or other remote Internet host computers. HTML document links may retrieve the data by use of HTTP, FTP, Gopher, or other Internet application protocols. The Virtual Reality Modeling Language (VRML) is also used to create documents for the World Wide Web. Specifically, VRML is typically used to create three-dimensional graphical documents.
The bulk of the information on World Wide Web is static and non-interactive documents created with HTML. These HTML documents contain text and still images, while a number contain short audio and video clips. As the content of information stored on the Internet and World Wide Web evolves, it is desirable to insert dynamic multimedia components (e.g., animated buttons, scrolling banners, blinking lights, bouncing or spinning objects, high quality music, and full motion video) and interactive multimedia components (e.g., a computer game sent over the Internet and played against one or more other users, or a remote computer) into a HTML document, to make the information more attractive and interesting to a user browsing the HTML document.
Network browsers currently support a number of dynamic and pseudo-interactive multimedia components directly. However, there are a number of problems currently associated with using dynamic and pseudo-interactive multimedia components in a HTML document. These browsers may still require a user to initiate any dynamic multimedia interaction. For example, a user typically must request the dynamic multimedia interaction by selecting a remote link with input from a keyboard, electronic mouse or other pointing device. Thus, a user cannot be provided dynamic multimedia automatically without first asking for it. This again prevents a user from fully enjoying dynamic multimedia components.
Since the World Wide Web and the Internet currently support a wide variety of information in multiple formats, a typical network browser cannot directly display every possible dynamic multimedia format it encounters. When a network browser encounters a multimedia component in a HTML document the browser is unable to handle directly (e.g., color images with a large number of colors, high quality audio, full motion video), it is common in the art for the network browser to call a helper application (e.g., a help wizard) that can handle the multimedia component. The multimedia component is handed off to the helper application for processing (e.g., playing the audio, full motion video). The constantly changing nature of information on the Internet and World Wide Web requires that the network browser be updated constantly with access to new helper applications. This is a time consuming process for the network browser creators, and prevents a user from fully enjoying new multimedia components that might be encountered.
Another frequent problem is that a HTML document may contain a non-standard HTML tag that describes a new dynamic multimedia component. Non-standard HTML tags cause users to constantly incorporate new updates into their browsers to take advantage of the dynamic multimedia described by the non-standard HTML tags. This is also a slow and time consuming process and may require an additional helper application as was described above.
Most network browsers also do not currently support true interactive multimedia. Most Internet and World Wide Web sites require a user to fill out and submit an electronic form and rely on a Common Gateway Interface (CGI) application, to invoke a remote software application to provide pseudo-interactive multimedia content (e.g., database access, search engines, protocol gateways). The CGI provides a mechanism for information retrieval, processing and formatting within a HTML document. CGI applications are typically written in a programming language or scripting language other than HTML (e.g., C, C++, Perl, UNIX shell language) and are executed on a remote computer. This remote execution is typically a slow and cumbersome interface process that also requires input (e.g., a mouse click) from a user.
In accordance with an illustrative embodiment of the present invention, the problems of handling dynamic and interactive multimedia in a HTML document are overcome. A method and system for automatically locating, downloading, verifying, registering, installing and displaying a software component from a remote computer is provided.
The method is used to automatically locate, download, verify, install, register, and display a computer software component obtained from a remote computer. The system includes a software component download module for locating computer software components with uniform resource locators (URLs), registering computer software components in a registry database, and displaying computer software components on a local computer. The software component download module also manages other system modules. A data download module downloads computer software components in an asynchronous manner from one or more remote computers. A code verification module verifies that the downloaded computer software components are safe to install on a local computer by verifying a digital signature and digital certificate sent with the downloaded computer software component. A code installation module installs the verified computer software components on the local computer. The software components are not limited to the display of multimedia information. Almost any software component can be downloaded, verified, and installed via the described method and system, whether it is an ACTIVEX Control, a NETSCAPE ONE Plugin, a JAVA class library, a multimedia player, a document viewer, or a custom control or applet for inclusion on a digital form or a digital document.
The method and system are used by applications (e.g., network browsers, network servers) to automatically download and install software components from code depositories on computer networks (e.g., the Internet, or local corporate intranets) to provide dynamic and truly interactive multimedia to a user. The method and system allow any software component, including dynamic and interactive multimedia components, to be described with a standard tag (e.g., the <OBJECT> tag) in a HTML document.
When the <OBJECT> tag is encountered in a HTML document during browsing with a network browser, the multimedia software components referenced by the <OBJECT> tag are automatically downloaded and displayed directly on a user's computer. A HTML document can now provide dynamic multimedia content and true interactivity, in a uniform, portable, architecture-neutral, robust manner using the method and system of the present invention.
Network browsers will no longer require frequent updates or help applications to provide dynamic and truly interactive multimedia to a user. A user browsing an HTML document can now be provided with dynamic and interactive multimedia automatically and take full advantage of the variety of multimedia provided the World Wide Web, the Internet, and other computer networks such as intranets.
In addition, the method and system of the present can also be used by applications or devices which are not network browsers (e.g. set top boxes for television network computers, satellite receiver boxes, digital personal assistants and wireless personal communications devices) to automatically locate, download, verify, install, register and display virtually any type of computer software component on any remote computer connected to a computer network like the Internet or an intranet. Any application which desires information from a remote computer can use the method and system of the present invention by sending the proper parameter information to the appropriate interfaces provided by the method and system.
The foregoing and other features and advantages of the illustrated embodiment of the present invention will be more readily apparent from the following detailed description, which proceeds with reference to the accompanying drawings.
Referring to
The illustrated CPU 14 is of familiar design and includes an ALU 24 for performing computations, a collection of registers 26 for temporary storage of data and instructions, and a control unit 28 for controlling operation of the system 10. Any of a variety of processors, including those from Digital Equipment, Sun Microsystems, MIPS, IBM, Motorola, NEC, Intel, Cyrix, AMD, Nexgen and others are equally preferred for CPU 14. Although shown with one CPU 14, computer system 10 may alternatively include multiple processing units.
The memory system 16 includes main memory 30 and secondary storage 32. Illustrated main memory 30 is high-speed random access memory (RAM) and read only memory (ROM). Main memory 30 can include any additional or alternative high speed memory device or memory circuitry. Secondary storage 32 takes the form of long term storage, such as ROM, optical or magnetic disks, organic memory or any other volatile or non-volatile mass storage system. Those skilled in the art will recognize that memory 16 can comprise a variety and/or combination of alternative components.
The input and output devices 18, 20 are also familiar. The input device 18 can comprise a keyboard, mouse, pointing device, audio device (e.g., a microphone, etc.), or any other device providing input to the computer system 10. The output device 20 can comprise a display, a printer, an audio device (e.g., a speaker, etc.), or other device providing output to the computer system 10. The input/output devices 18, 20 can also include network connections (e.g., Internet and intranet connections), modems, or other devices used for communications with other computer systems or devices.
As is familiar to those skilled in the art, the computer system 10 further includes an operating system and at least one application program. The operating system is a set of software that controls the computer system's operation and the allocation of resources. The application program is a set of software that performs a task desired by the user, making use of computer resources made available through the operating system. Both are resident in the illustrated memory system 16.
In accordance with the practices of persons skilled in the art of computer programming, the present invention is described below with reference to acts and symbolic representations of operations that are performed by computer system 10, unless indicated otherwise. Such acts and operations are sometimes referred to as being computer-executed. It will be appreciated that the acts and symbolically represented operations include the manipulation by the CPU 14 of electrical signals representing data bits which causes a resulting transformation or reduction of the electrical signal representation, and the maintenance of data bits at memory locations in memory system 16 to thereby reconfigure or otherwise alter the computer system's operation, as well as other processing of signals. The memory locations where data bits are maintained are physical locations that have particular electrical, magnetic, optical, or organic properties corresponding to the data bits.
The data bits may also be maintained on a computer readable medium including magnetic disks and any other volatile or non-volatile mass storage system readable by the computer 12. The computer readable medium includes cooperating or interconnected computer readable media, which exist exclusively on computer system 10 or are distributed among multiple interconnected computer systems 10 that may be local or remote.
In an illustrative embodiment of the present invention, the computer system 10 preferably uses the WINDOWS 95 client/server operating system. However, other client/server operating systems (e.g. the MICROSOFT WINDOWS NT operating system, the OS/2 operating system by IBM, the MAC OS operating system, the UNIX operating system, the MICROSOFT WINDOWS CE operating system, etc.) could also be used. A client/server operating system is an operating system which is divided into multiple processes of two different types: server processes, each of which typically implements a single set of services, and client processes, which request a variety of services from the server processes. Object oriented programming is used to design the client/server operating system, and applications that run under the client/operation system, where objects represent system resources.
For example, the MICROSOFT WINDOWS 95 client/server operating system provides shareable resources, such as files, memory, processes and threads, which are implemented as "objects" and are accessed by using "object services." As is well known in the art, an "object" is a data structure whose physical format is hidden behind a type definition. Data structures, also referred to as records or formats, are organization schemes applied to data so that it can be interpreted, and so that specific operations can be performed on that data. Such data structures impose a physical organization on the collection of data stored within computer memory 16 and represent specific electrical, magnetic or organic elements.
An "object type," also called an "object class," comprises a data-type, services that operate on instances of the data type, and a set of object attributes. An "object attribute" is a field of data in an object that partially defines that object's state. An "object service" implements and manipulates objects, usually by reading or changing the object attributes. "Object oriented design" is a software development technique in which a system or component is expressed using objects.
An object typically has two components: a function table, containing a pointer to each object member function (i.e., sometimes known as an object method) defined in the object's class, and a data block, containing the current values for each object variable (i.e., data members, sometimes known as an object property). An application has some reference to an object through an object pointer. An application obtains this object reference by using some type of function call (direct or implied) in which that function allocates an object block in computer memory, initializes the function table, and returns the reference to the computer memory to an application. The computer memory may be local or distributed on a remote computer.
The MICROSOFT WINDOWS 95 operating system allows users to execute more than one program at a time by organizing the many tasks that it must perform into "processes." The operating system allocates a portion of the computer's resources to each process and ensures that each process's program is dispatched for execution at the appropriate time and in the appropriate order.
In an illustrative embodiment of the present invention, processes are implemented as objects. A process object comprises the following elements: an executable program; a private address space; system resources (e.g., communication ports and files) that the operating system allocates to the process as the program executes; and at least one "thread of execution." A "thread" is the entity within a process that the operating system kernel schedules for execution. As is well known in the art, each thread has an associated "context" which is the volatile data associated with the execution of the thread. A thread's context includes the contents of system registers and the virtual address belonging to the thread's process. Thus, the actual data comprising a thread's context varies as it executes.
The Component Object Model (COM) and Distributed Component Object Model (DCOM) are models used for object oriented programming. The COM and DCOM specifies how objects within a single application or between applications (e.g. client/server applications) interact and communicate by defining a set of standard interfaces. Interfaces are groupings of semantically related functions through which a client application accesses the services of a server application.
Object Linking and Embedding (OLE), such as OLE Version 2 by the Microsoft Corporation of Redmond, Wash., and ACTIVEX (network activation controls) technology are based in part on the Component Object Model and allows the creation of objects of different formats which operate on data through defined interfaces, rather than operating on the applications responsible for the data. ACTIVEX technology is based in part on OLE technologies. The object data can be embedded within an object, or linked to it, so that only a link reference to the data is stored in the object.
In a browsing environment 34 of an illustrative embodiment of the present invention shown in
Documents for browsing with the illustrated browser can reside as files of a file system stored in the computer's secondary storage 32 (
When used for browsing documents, the illustrated browser displays the document in a window 50 or area of the local computer's 36 display 20 allocated to the browser by the operating system. The illustrated window 50 comprises a document display area 52 and user interface controls 54. The browser displays the document within the document display area 52 of the window 50. However, other display types could also be used. The computers 36, 44 can also be network computers (NCs) which include only selected components of computer system 10.
The browser and other client applications within the local computer 34 preferably work with documents (which have data formats other than those native to the browser or client application) by encapsulating the document's data into an associated object, and integrating with the object using pre-defined interfaces as described more fully below. This allows full use of all the features described below.
Alternatively, the browser or other client application can work with a document by launching an application program associated with the document and causing the associated application program to load the document and perform a specified operation on the document. In the MICROSOFT WINDOWS 95 operating system, this is done by looking up the application program associated with the document's file name extension in the system registry, (e.g., ".doc" for MICROSOFT WORD documents, ".vsd" for Shapeware's VISIO drawings, etc.) and a text string command for directing the program to perform a desired operation. The application program associated with a document also may be identified in the MICROSOFT WINDOWS operating system by matching a bit pattern at specific offset into the file as also specified in the system registry. The browser or other client application patches the document's file name into the text string command and invokes the operating system's shell execute service to execute the command. Shell execute is a well known MICROSOFT WINDOWS operating system service which issues a text string as a command to the operating system's command interpreter (i.e., the "command.com" program in the MICROSOFT WINDOWS operating system).
The text string generally is in the form of an MS-DOS command, which specifies a path and file name of the associated application program's executable file, a flag for specifying the desired operation, and the document's path and file name. The command interpreter responds by parsing the text string, loading the application program specified in the text string, and passing the flag and the document's path and file name as command line arguments into the application program. The application program then "opens" (i.e., loads) the document and performs the operation specified by the flag.
As was described above, it is desirable to add interactive or dynamic behavior to a document 46 written in HTML and other formats by obtaining software components from one or more remote computers. As is shown in
When a request is made to download a desired software component stored on a remote computer 44, the software component download module 58 determines if the desired software component is already installed on the local computer 36. If the desired software component is already installed on the local computer 36, then the desired software component on the local computer 34 is checked to see if a more recent version is available. If a more recent version of the desired software component is available, or if the desired computer software component is not available on the local computer 34, then it is downloaded in an asynchronous manner by the data download module 60. The software component download module 58 uses a Uniform Resource Locator (URL) or a network search path to locate a desired software component. The URL and network search path will be explained below.
Any software components downloaded to the local computer 36 are verified with the code verification module 62. The code verification module 62 checks a digital signature in a digital certificate included in the downloaded software component to ensure the downloaded software component is safe (e.g., computer virus and corruption free) on the local computer 34. The digital certificate is used to inform a user who created the software component and signed it with the digital signature. After it is verified by the code verification module 62, the downloaded computer software component is installed on the local computer 34 by the code installation module 64.
In an illustrative embodiment of the present invention, system 56 includes a software interface CoGetClassObjectFromUrl for the software component download module 58, a software interface URL Moniker for the data download module 60, a software interface WinVerifyTrust for the code verification module 62, and a software interface ICodeInstall for the code installation module 64.
In an illustrative embodiment of the present invention, the software interfaces and corresponding software subroutines just described are available in the Internet Component Download Application Program Interface (API) for the MICROSOFT WINDOWS 95 Operation System by Microsoft Corporation of Redmond, Wash. The details of each of these interfaces will be explained below. However, the modules of system 56 may also be implemented as hardware modules, or a combination of software and hardware modules. In addition, other software subroutines, interfaces, and operating systems could also be used for system 56.
The system 56 is used with method 66 as is shown in
In an illustrative embodiment of the present invention, computer software components (e.g., a control file) are automatically located 68 using one of two designators: a URL or a network search path. The URL or network search path are used to first locate 68 a control file on a remote computer. The control file can be a single portable executable file or a file (e.g., a cabinet or initialization file) which contains one or more remote executable files, library files (e.g., Dynamic Link Library (.DLL) files), or references to one or more remote executable files or library files. The control file is used to determine the location of the software components on one or more remote computers 44 to download to the local computer 36.
In an illustrative embodiment of the present invention, the control file is used to locate object oriented software components including: Object Linking and Embedding (OLE) components, ACTIVEX (network activation) components, VISUAL BASIC components, NETSCAPE ONE Plug-ins, JAVA components or others to provide dynamic or interactive multimedia to a user. Moreover, software components can be downloaded to provide functionality other than dynamic or interactive multimedia and the components need not be in the form of object-oriented software components.
Downloaded software components are automatically verified 72 by checking a digital signature and a digital certificate contained within the software components (e.g., with WinVerifyTrust ). However, security measures other than digital signatures and digital certificates could also be used to verify a software component. In another embodiment of the present invention, the software verification step 72 is optional. For example, on a corporate intranet, where all software components behind a corporate firewall are automatically trusted and need no verification. The verified software components are then automatically installed 74 (e.g., with ICodelnstall) in various directories of a file system on the local computer 34. After installation the software components are registered 76 (e.g., with DllRegisterServer or Module Usage) in a registry database on the local computer 34. The registry database is used to keep track of which software components are installed on the local computer 34. In another embodiment of the present invention, the registration step 76 is optional. After registration, selected software components are returned 78 to a requesting application. Further details of method 66 will be explained below.
In an illustrative embodiment of the present invention, a network browser such as the MICROSOFT INTERNET EXPLORER version 3.0, uses system 56 and method 66 to download and install object oriented software components used for dynamic or interactive multimedia in HTML documents 46. However, other applications can use system 56 and method 66 to download and install executable software components from one or more remote computers.
To use dynamic or interactive multimedia in HTML documents, HTML <OBJECT> tags are used. One or more HTML <OBJECT> tags are embedded into a document written in HTML or some other programming or scripting language which permits HTML references. The <OBJECT> tags typically point to object-oriented computer software components or some other file format that is executable or references an executable file.
The HTML <OBJECT> tag has multiple attributes including: DATA, CODEBASE, CLASSID, TYPE, ID, and CLASS attributes. The DATA attribute specifies a Uniform Resource Locator (URL) referencing an object's data. The CODEBASE attribute is an optional attribute used when the object references a desired software component program. Besides the actual location of the desired software component, the "CODEBASE" URL in the <OBJECT> tag may also include an optional version number using the following syntax:
Where "a,b" in "#Version=a,b,c,d" represent the desired version of a software component on a remote server, and "c,d" represent the desired version of a local software component. The method 66 will download 70 and process (72-78) the software component pointed to by the CODEBASE attribute only if the specified version number of the remote software component is more recent than any existing version of the same software component currently installed on the local computer 34. If a version number is not specified for a software component, it is assumed that any version installed on the local computer 34 is proper to use. The CODEBASE attribute can also be a URL fragment with the syntax
Specifying only "#Version=−1,−1,−1,−1" for the CODEBASE attribute causes a network search path to be used to find the latest version of a desired software component. The network search path will be explained below.
The CLASSID attribute is used to specify an object identifier. On each computer (36,44) connected to the computer network 38, for example, the operating system registry (also called the registration database) is used to store relevant information about object oriented components according to their CLaSs IDentifier (CLSID). An object registers its CLSID in the operating system registry database to enable client applications (e.g., a network browser) to locate and load the executable code associated with the objects. The HTML <OBJECT> CLASSID is equivalent to the object-oriented CLSID.
The CLSIDs are also given the alias "GUID," which stands for Globally Unique IDentifiers. Each object class is represented by a CLSID, a 128-bit (16-byte) number that is assumed to be unique on computer network across space and time. A CLSID is a 16-byte value with a specific structural definition that has an ASCII representation shown below as a group of hexadecimal digits within braces such as "{42754850-16b7-11ce-90eb-00aa003d7352}" (The groupings of the hex digits and the hyphens are part of the ASCII representation as well). Application programs such as the network browser manipulate the structural definition (e.g., the C/C++structural definition) of the CLSID. The CLSID is used as the HTML <OBJECT> CLASSID.
The TYPE attribute specifies the Internet media type for the OBJECT data. The ID attribute is used to define a document-wide identifier. The CLASS attribute is used for applying a pre-determined style to an OBJECT element. Remaining <OBJECT> tag attributes, like "ID, STYLE, DIR, ALIGN, WIDTH, HEIGHT, BORDER, HSPACE and USPACE" are known attributes in HTML and, although previously used in a manner different from the present invention, are generally described in HTML 3: Electronic Publishing on the World Wide Web by Dave Ragget, Jenny Lam, and Ian Alexander, Addison-Wesley, 1996.
An example <OBJECT> tag in a HTML document for an ACTIVEX Control is shown below.
After embedding one or more HTML <OBJECT> tags in a document written in HTML and storing the document on a remote computer 44 connected to a computer network 38 (e.g., the Internet, an intranet) the document 46 is browsed with a network browser from the local computer 34.
When an HTML <OBJECT> tag is encountered in the document by the network browser, the <OBJECT> tag is parsed to pull out <OBJECT> tag attributes (e.g., the CLASSID, CODEBASE, etc.). The network browser passes the <OBJECT> tag attributes to the software component download module 58 via the CoGetClassObjectFromURL interface. If a network browser is not used, other applications could use method 66 and system 56 by sending the proper parameters to the CoGetClassObjectFromURL interface.
In an illustrative embodiment of the present invention, the single interface CoGetClassObjectFromURL manages method 66 and system 56. However, multiple interfaces could also be used. Any application that wishes to download almost any software component from a remote computer 44 connected to a computer network 38 like the Internet can do so by passing the appropriate parameters to the CoGetClassObjectFromURL interface.
The interface to the CoGetClassObjectFromURL interface is shown below.
In an illustrative embodiment of the present invention, the values for parameters passed to the CoGetClassObjectFromURL interface are read directly from an HTML <OBJECT> tag. For example, the szCodeURL, dwFileVersionMS, and dwFileVersionLS are specified inside an <OBJECT> tag with "CODEBASE=http://www.foo.com/bar.ocx#Version=a,b,c,d" where szCodeURL is "http://www.foo.com/bar.ocx",dwFileVersionMS is "a,b", the major version of a file on a remote server (e.g., a software provider such as Microsoft), and dwFileVersionLS is "c,d", the version of a file on the local computer. The CoGetClassObjectFromURL interface is responsible for managing method 66 and system 56. A software component requested with method 66 is typically a factory class object. A class factory generates actual object class instances of an object and is known to those skilled in the art.
As is shown in
If the desired software component is registered and installed on the local computer, and if the version number is correct, then the desired software component is obtained from the local computer 36. If the desired software component is not registered and installed on the local computer, or if the version number is incorrect, then the desired software component is obtained from the remote computer 44.
To obtain the desired software component from the remote computer 44, the szCodeURL parameter is checked 90. If the szCodeURL parameter is not NULL, then an attempt is made to locate the desired software component with the URL stored in szCodeURL. If the URL is valid 92, the desired software component will be downloaded 70 (
Each of URLs URL1 through URLn in the network search path are absolute URLs pointing to HTTP servers acting as "Object Stores" 44. However, other formats could also be used for the network search string.
As is shown in
If the CODEBASE keyword is not included in the CodeBaseSearchPath key, then calls to CoGetClassObjectFromURL will not check the szCodeURL location for downloading code. By removing the CODEBASE keyword from the CodeBaseSearchPath, corporate intranet administrators can effectively disable corporate users from accessing any remote computer to obtain a computer software component specified by a HTML <OBJECT> tag. This also allows registration of default Object Store locations 44 on the World Wide Web, where browsers can find code when no CODEBASE location is explicitly specified. In addition, by removing the CODEBASE keyword from the CodeBaseSearchPath and pointing URL1 through URLn to intranet sites, corporate intranet administrators can effectively disable corporate users from accessing software components from any computers outside a local intranet.
In an alternative embodiment of the present invention, the network search path can be used in an alternative way: the URLs in the network search path (98-102, 106-110) will be searched for a control file after trying the location specified in the szCodeURL parameter for CoGetClassObjectFromURL, (e.g., after trying the location specified in the CODEBASE attribute 104 from a HTML <OBJECT> TAG).
In an illustrative embodiment of the present invention, an Object Store on the network search path is an HTTP server that services requests for a desired control file. CoGetClassObjectFromURL will try to locate the control file from the various Object Stores in the search path. Specifically, an Object Store will receive an HTTP POST request with data in the format below:
The HTTP POST parameters are processed by the Object Store as follows: If CLSID is provided with no version number, then the most recent object matching the CLSID will be returned. If the CLSID is provided with Version, then the object matching the CLSID and with the highest version number greater than or equal to Version will be provided. If no object is available that matches the CLSID with a large enough version number, then the HTTP error (e.g., the 404 error) will be returned. MIMETYPE will be ignored when CLSID is provided.
If no CLSID is provided, but MIMETYPE is provided, then the first object found in the database that matches the MIMETYPE will be returned. Version, if provided, is treated as described above. If neither CLSID or MIMETYPE is provided then the HTTP error return code "400 Bad Request" will be returned.
In addition to the HTTP POST data described above, queries to Object Stores may also include HTTP headers for ACCEPT (MIME type) and ACCEPT-LANGUAGE, thus specifying the desired platforms and language-localized implementation for a component. HTTP headers are typically added to all HTTP requests made by method 66 and system 56. This allows Object Stores to serve different code implementations for differing platforms or even different languages.
The illustrated and alternative embodiments of the present invention described above assume that all computer software storage servers searched with the network search path are active HTTP servers capable of handling HTTP POST requests and querying an object database to find the desired software components. In another alternative embodiment of the present invention, non-HTTP servers can also be used in the network search path (e.g., FTP servers and standard file servers).
The control file located 68 on a remote computer can be, for example, a portable executable file, a cabinet file, or an initialization file. A portable executable (PE) is a single executable file that is downloaded, verified, registered and installed on the user computer according to method 66. The portable executable is typically an OLE control or ACTIVEX (network activation) control file (e.g., .OCX), a Dynamic Link Library file (e.g., DLL), or a executable file (.EXE). OLE control, ACTIVEX, Dynamic Link Library, and executable files are known to those skilled in art.
A single portable executable file is the simplest way to package a software component to provide dynamic or interactive multimedia. However, when a single portable executable is used, the file is typically not compressed, and the software component will not be platform independent unless an HTTP server negotiates a platform independent format. The HTTP server negotiation will be explained in detail below.
A cabinet file (e.g., .CAB) can be used for the control file. The cabinet file contains one or more files, all of which are downloaded together in a compressed "cabinet." One file in the cabinet is an initialization file (e.g., .INF) providing further installation information. This .INF file may refer to files in the cabinet as well to files at other URLs. Using a cabinet file requires authoring of a .INF and packaging of a .CAB file, but in return it provides file compression. File compression is completed with Lempel-Ziv compression, which is known in the art. However, other compression formats could also be used.
Cabinet files can be created with the DIANTZ.EXE tool by Microsoft Corporation. However, other cabinet file creation tools can also be used. The DIANTZ.EXE tool takes a directive file (e.g., .DDF), which specifies how to create a cabinet file, and creates a cabinet file. The DIANTZ.EXE is used with the following command line:
DIANTZ.EXE /f directive_file.ddf where the "/f" attribute tells the DIANTZ.EXE tool to use the file "directive_file.ddf" to create the cabinet file. An example directive file, CIRC3.DDF is shown below.
A stand-alone initialization file (.INF) can also be used for the control file. This file specifies various files that need to be downloaded and setup. The syntax of the .INF file allows URLs pointing to files to download, and provides platform independence by enumerating choices for various platforms. An example initialization file is shown below.
The .INF file has instructions to install each of the necessary files, and comments are again designated with a semi-colon ";". For example, the .INF file specifies that the "circ3.ocx" file needs to be installed on the local computer with a "clsid={9DBAFCCF-592F-101B-85CE-00608CEC297B}." "FileVersion=0,0,1,2" is used to check a local version of a file to see if it is earlier than Version 1.2. If it is, it will be downloaded to the local computer. The "circ3.ocx" can be downloaded from a remote computer in a cabinet file using the URL "file=http://www.code.com/circ3/circ3.cab." The "FileVersion=" attribute for the "random.dll" file is empty, so that any version of this file is ok. The "file=" attribute is empty for "mfc40.dll" and "foo.ocx" which signifies that these files should not be downloaded to the local computer. If these files don't exist on the local computer, then the downloading fails.
The initialization file also provides platform independence for HTTP and non-HTTP servers which store the desired software components. It is possible to create platform-independent setup scripts that pull desired software components from different locations depending on the desired platform. A sample platform-independent .INF file would include a text such as the following:
The following MIME types will be used to describe PEs (portable executables-.EXE, .DLL, .OCX), cabinet files (.CAB), and setup scripts (.INF):
When the desired software component is on a non-HTTP server (e.g., at an intranet or local LAN location), a .INF file can be used to achieve platform independence by specifying different URLs for files to be downloaded for different platforms.
Platform independence for HTTP servers that store the desired software components is also provided without using an initialization file. An HTTP ACCEPT header MIME request type is used to provide platform independence. The MIME request type specifies which platform the code is to run on, thus allowing platform independence when the CODEBASE attribute or the network search path is used.
After locating 68 (
The URL moniker interface uses the IBindStatusCallback interface, which is implemented in an application program like the network browser, to pass status information back to the application program. The IBindStatusCallback interface enables the browser to tell the user when the download 70, verification 72, registration 74, and installation 76 steps are complete.
The client of the CoGetClassObjectFromURL interface (e.g., the network browser) will receive notification about the download/install process via the provided IBindStatusCallback interface. During the download process, the following additional values (from the BINDSTATUS enumeration of MICROSOFT WINDOWS 95, for example) may be passed back as the ulStatusCode parameter for IBindStatusCallback::OnProgress.
Since the downloading 70 of software components occurs asynchronously, the CoGetClassObjectFromURL interface will often return immediately with a return value of E_PENDING. At this point, the IBindStatusCallBack mechanism is used to communicate the status of the download operation to the client (e.g., the network browser). To participate in this communication, the client implements IBindStatusCallback and registers this interface in pBindCtx passed into CoGetClassObjectFromURL using RegisterBindStatusCallback. The client can expect to be called with callback notifications for OnStartBinding (providing an IBinding for controlling the download), OnProgress (reporting progress), OnObjectAvailable (which returns the desired object interface pointer), and OnStopBinding (which returns error codes in case of an error). For further negotiations, the client also implements ICodeInstall to install the desired software component as is described below. However, other downloading and callback processes can also be used.
After downloading 70 the necessary software components to the local computer 36, the software components are verified 72 with a code verification module 62. CoGetClassObjectFromURL uses the WinVeriftyTrust interface and the ICodeInstall interface to ensure the necessary software components are safe and trusted, and to ensure that the user wants to install the software components. However, other interfaces could also be used to verify and install the necessary software components. ICodeInstall is implemented by the downloading client (e.g., the network browser), and is used whenever installation of software components needs some service (e.g., verification) before the download can be negotiated correctly.
A code install operation 74 requires additional services from the client in order to complete the negotiation necessary for a download operation 70. Such services are requested using IBindStatusCallback::QueryInterface. The specific interface requested in IBindStatusCallback::QueryInterface is ICodeInstall. This interface is implemented by a client application (e.g., a network browser). The ICodeInstall interface has two member functions: NeedVerficationUI and OnCodeInstallProblem. The ICodeInstall interface and functions are shown below.
ICodeInstall::NeedVerification UI is called to display User Interface (UI) for verification of downloaded code. When a client is called with this function, it has the opportunity to clear a message queue of its parent window before allowing UI to be displayed. If the client does not wish to display UI, code verification may continue, but components may fail to be installed. The parameters for ICodeInstall::NeedVerificationUI are explained below.
HRESULTNeedVerificationUI([out] HWND* phwnd);
ICodeInstall::OnCodeInstallProblem is called when there is a problem with code installation. This notification gives the client a chance to resolve the problem, often by displaying UI, or by aborting the code installation process. The parameters for ICodeInstall::OnCodeInstallProblem are explained below.
After the necessary software components are downloaded, the WinVeriftyTrust interface checks to see if the downloaded components possess a digital signature. However, other verification interfaces could also be used. If the downloaded software components posses a digital signature, the WinVeriftyTrust interface validates the digital signature and its corresponding digital certificate. The digital certificate describes who issued the software component and who created the digital signature. If the downloaded software components do not possess a digital signature, or if the corresponding signature was not issued by a trusted authority, WinVeriftyTrust gives the client-side (e.g., network browser) user the option of whether or not to trust the code and install it on the local computer 36. Before asking for verification on its own, WinVerifyTrust uses ICodeInstall::NeedVerificationUI to confirm that it is appropriate to display the appropriate UI for the user of the local computer 34.
After the code has been verified 72, the control file is installed 74 on the local computer 34 with a code installation module 64. As is shown in
In an illustrative embodiment of the present invention, most of the downloaded software components are installed in a permanent cache store in an operating system directory called "windows\occache." However, other directories could also be used. Some components (e.g., helper DLLs that need to be on the system PATH but currently are not) will also be installed in the "\windows" and "\windows\system" directories. However, other directories could also be used. If there are any problems during installation (e.g., a full disk, access violations, existing older/newer version of a file, etc.), the code install interface function ICodeInstall:OnCodeInstallProblem is called to make the user aware of the problem.
If the portable executable file is an .OCX or a .DLL file 126, it is registered by calling the DllRegisterServer interface 128. The DllRegisterServer interface is an interface which registers a software component in the registry database of the operating system. However, other registering interfaces could also be used. If the portable executable file is a .EXE file 130 (
In an illustrative embodiment of the present invention, self-registering software components are used because the .INF format does not provide syntax for changing registry information (for security reasons). For .OCXs, .DLLs, and .EXEs marked as "OleSelfRegister" in the Version resource, self-registration will be attempted. For .DLLs and OCXs, this means loading the .DLL library and calling DllRegisterServer. For .EXEs, this means running the .EXE with the run-time parameter of "/RegServer". This ensures that software components implemented as local servers (e.g. winword.exe) are registered correctly. If an object is not marked as "OleSelfRegister" but registration is necessary, or if it is desired to over-ride the "OleSelflegister" flag, the following lines can be added to an .INF file:
Returning to
To permit code caching, the "SharedDLLs" section in the registry database is not used exclusively since reference counts are often incorrectly inflated. For example, any application that is re-installed on the local computer increases the reference count in the SharedDLLs section of the registry database even though the software component already had been incremented previously. However, in an illustrative embodiment of the present invention, every client (e.g., network browser) of a software module is expected to increment and decrement the existing SharedDLLs section in the registry database as well (a client only increments this value once when it adds itself as a client under ModuleUsage). This is to allow a migration path for applications currently implementing only SharedDLLs scheme.
The ModuleUsage registry information complements the reference counts in the SharedDLLs section by remembering which clients are actually using a shared module. The SharedDLLs counting scheme is correct when used with ModuleUsage registry information and allows caching of downloaded code in the permanent cache store. Furthermore, when downloading files, the ModuleUsage registry information is used as an efficient shortcut for verifying whether a file needs to be overwritten because it is an out-of-date version. In another embodiment of the present invention, the registering step 76 is optional.
Downloaded code installed in the permanent cache store can be removed manually or automatically. In one embodiment of this invention, a user is allowed to clean up downloaded code, either through the UI of the application program (e.g., the network browser) or via UI exposed by the operating system itself (e.g. the MICROSOFT WINDOWS 95 "shell." In another alternative embodiment of the present invention, ModuleUsage information is used by the CoGetClassObjectFromURL interface to automatically detect old or unused downloaded code, and automatically delete such code from the permanent cache store.
In another embodiment of the present invention, software can be located 68, downloaded 70 and installed 74, with the verifying 72 and registering 76 steps optional. This allows a user to control more of the automatic code downloading method with other software applications chosen by the user.
For example, a "hook" mechanism is provided to override or customize steps of method 66. In the illustrative embodiment of the present invention, there are two types of hooks: Unconditional (e.g., for a setup program) and Conditional (e.g., for a version of an existing software component) hooks. Unconditional hooks are hooks that are always executed. Conditional Hooks are executed only when a certain selected condition evaluates to TRUE. Hooks are added to the .INF file described above.
Unconditional hooks are used in [Setup Hooks] section of the .INF file. For Unconditional Hooks, the "CODEBASE=" attribute points to a cabinet file "foo.cab" that contains a "foosetup.exe", "foo.ocx" and "foo.inf." file. The setup file "foosetup.exe" run with the "/q" parameter will install the "foo.ocx" file silently in the "windows\occache" directory described above.
For Unconditional hooks, an example initialization file "foo.inf" includes the following:
When the cabinet file foo.cab is opened, it is verified and then the .INF file is processed. Since the [Add.Code] section is empty, the [Setup Hooks] section is processed. The files in the cabinet file "foo.cab" are installed in a unique temporary directory and the command line listed in the "run=" attribute is executed (i.e., run=%EXTRACT_DIR%\foosetup.exe /q"). All the files left in the temporary directory after the completion of "foosetup.exe" including "foosetup.exe" are discarded. However, other commands could also be used for the Unconditional Hooks.
Conditional Hooks are run only when a certain condition is evaluated as TRUE. This is typically when the [Add.Code] section points at a certain software component and that software component is not available on the client computer. The above example for Unconditional Hooks could be rewritten using Conditional Hooks.
For Conditional Hooks the "CODEBASE=" attribute also points to a cabinet file "foo.cab" that contains a "foosetup.exe", "foo.ocx" and "foo.inf" file. The file setup file "foosetup.exe" run with the "/q" parameter also installs the file "foo.ocx" silently in the "windows\occache" directory as was described above.
For Conditional Hooks, an example initialization file "foo.inf" includes the following:
When the .INF is opened, it is processed using the [Add.Code] attribute. When the [foo.ocx] section is processed, the Clsid, (e.g. for "foo.ocx") is used to determine if it is registered or available on the client computer by checking the operating system registry. If "foo.ocx" is not registered on the client computer, the hook mentioned in the [hook1] parameter is executed. The execution of [hook1] section is identical to the description of the hook as an Unconditional Hook, but occurs only after checking the CLSID of "foo.ocx." However, other commands could also be used for the Conditional Hooks.
Conditional Hooks can be used to make the verifying 72 and registering 76 steps of method 66 conditional (i.e., optional). This allows a user to use method 66 and system 56 to simply locate, download, and install a desired software component without verification or registration. The verification and/or registration steps could be accomplished by methods different than those described in connection with method 66 and system 56 giving the user greater flexibility over the use of the software components downloaded and installed on the local computer.
In another embodiment of the present invention, the HTML tag <EMBED> is also used to add multi-media or interactive behavior to HTML documents with method 66 and system 56. The <EMBED> tag has three attributes, SRC, WIDTH, and HEIGHT, and may also contain optional parameters that can be sent to a software component (e.g., a Netscape ONE plug-in) handling the embedded data type. The SRC attribute specifies the URL of the source document. The WIDTH attribute specifies the width of the embedded document in pixels. The HEIGHT attribute specifies the height of the embedded document in pixels. There can also be a number of optional parameters passed to a plug-in component with the <EMBED> tag, with PARAMETER_NAME=<PARAMETER_VALUE> (e.g., the parameters described for the <OBJECT> tag above). For more information on the <EMBED> tag, see the HTML 3 Electronic Publishing on the World Wide Web book cited above.
When the <EMBED> object tag is encountered in the document by the network browser, the <EMBED> tag is parsed to pull out the <EMBED> tag attributes, and the attributes are used with method 66 and system 56 in a manner similar to that described for the <OBJECT> tag above.
The present invention is not limited to the HTML <OBJECT> and <EMBED> tags. Other HTML tags can also be used to provide method 66 and system 56. In addition, the present invention is not limited to computer system 10 or the browsing environment 34. The invention can also be used in a set-top box, such as those which provide interfaces to cable television and other television networks, in a satellite control box, such as those which provide interfaces to digital and other satellite transmission services. The present invention may also be used in pagers, cellular telephones, personal assistants and other wireless personal communications devices.
When all of the desired computer software components have been located 68, downloaded 70, verified 72, installed 74, and registered 76, any appropriate software components are returned 78 to the client application (e.g., the network browser) which made the request for the computer software components. The software components returned to the client application are then displayed in the document display area 52 on the display device 20 of the local computer 36.
In an illustrative embodiment of the present invention, the MICROSOFT INTERNET EXPLORER 3.0 network browser by Microsoft uses system 56 and method 66 (and methods 80, 96 and 112) to browse HTML documents 46 on the Internet 38. The software interfaces and corresponding software subroutines just described for methods 66 (and methods 80, 96 and 112), and system 56 are available in the Internet Component Download Application Program Interface (API) for the MICROSOFT WINDOWS 95 operating system by Microsoft Corporation.
HTML documents typically contain one or more HTML <OBJECT> or <EMBED> tags. When an HTML <OBJECT> or <EMBED> tag is encountered during browsing, MICROSOFT INTERNET EXPLORER parses the appropriate parameters out of the <OBJECT> and <EMBED> tags and passes them to the CoGetClassObjectFromURL interface as was described above. The HTML <OBJECT> or <EMBED> tags typically point to object oriented applications which provide dynamic or interactive multimedia to an HTML document.
However, other applications which are not network browsers, and do not parse HTML documents with <OBJECT> or <EMBED> tags can also use system 56 and methods 66 to download any type of computer software component from a local or remote computer by passing appropriate parameters to CoGetClassObjectFromURL interface. The computer software components need not provide dynamic or interactive multimedia to a client application. In addition interfaces other than CoGetClassObjectFromURL could also be used.
It should be understood that the programs, processes, and methods described herein are not related or limited to any particular type of computer apparatus, unless indicated otherwise. Various types of general purpose or specialized computer apparatus may be used with or perform operations in accordance with the teachings described herein.
In view of the wide variety of embodiments to which the principles of our invention can be applied, it should be understood that the illustrated embodiments are exemplary only, and should not be taken as limiting the scope of our invention. Rather, we claim as our invention all such embodiments as come within the scope and spirit of the following claims and equivalents thereto.
Patent Citations
Non-Patent Citations
Referenced by
Legal Events
Original Image


text:
Robert Reich: The President needs to deliver the same message to the public, loudly and clearly. The biggest problems we face are unemployment, stagnant wages, slow growth, and widening inequality — not deficits. The major goal must be to get jobs and wages back, not balance the budget.
Why Deficit Reduction, Not Jobs and Wages?
Why Jobs Trump Deficit Reduction
A Nation of Cliff-Dwellers
Obama's Tiny Jobs Ideas for Main Street, A Big Spending Freeze for Wall Street
Robert Reich: President Obama today offered a set of proposals for helping America's troubled middle class. All are sensible and worthwhile. But none will bring jobs back. And Americans could be forgiven for wondering how the President plans to enact any of these ideas anyway, when he can no longer muster 60 votes in the Senate.
The Rebirth of Keynes, and the Debate to Come
by Robert Reich — The economy has just about come to a standstill – not so much because credit markets are clogged as because there's not enough demand in the economy to keep it going. Consumer spending has fallen off a cliff. Investment is drying up. And exports are dropping because the recession has now […]

subset: commoncrawl


text:
April 24, 2009
Lol has yet to fill out a bio.
Lars Hanson posted 2296 days ago
Hey why do your comments never show up
Lars Hanson posted 2298 days ago
I got the email. I'm going to call Tim because I also write for him so ill let him know its for real
firstname.lastname@example.com. Finally
Lol does not have any awards.
Lol is not a member of any communities.
Choose Teams
Real-time news for your favorite teams, right on your mobile device.
Download Now
B/R's Writer Program and Advanced Program in Sports Media can give you the edge you need to get ahead.
Apply Now
Copyright © 2015 Bleacher Report, Inc. Turner Broadcasting System, Inc. All Rights Reserved.
BleacherReport.com is part of Bleacher Report - Turner Sports Network, part of the Turner Sports and Entertainment Network.
Certain photos copyright © 2015 by Getty Images.
Any commercial use or distribution without the express written consent of Getty Images is strictly prohibited.


text:
_____. Thomas Chalmers (Bitesize Biography Series). Darlington, England : EP Books, 2015._____. Unity & Diversity - The Founders of the Free Church of Scotland. Fearn, Ross-shire: Christian Focus, 2010.
_____. "A Kirk Disrupted: An Interview with A. Donald Macleod". (with Jeremy Eshelman). March 2014. Online: http://www.wts.edu /stayinformed/view.html?id=1757._____. "I Believe: Studies in the Apostle"s Creed, Part 4: I Believe in the Church and Things to Come." New Horizons, (June 2010).———. "I Believe: Studies in the Apostle's Creed, Part 3: I Believe in the Holy Spirit" New Horizons, 31:5 (May 2010): 12-13.———. "I Believe: Studies in the Apostle's Creed, Part 2: I Believe in Jesus Christ" New Horizons, 31:4 (April 2010): 12 -13.———. "I Believe: Studies in the Apostle's Creed, Part 1: I Believe in God" New Horizons, 31:3 (March 2010): 12-13.———. "Responding to John Ross" with Carl R. Trueman in, The Monthly Record of the Free Church of Scotland (October 2008): 31.———."Westminster and Wikipedia: The Theological Library in the Twenty First Century," Westminster Theological Journal, 69:2, (Fall 2007): 217-228.———."Read Any Good Books Lately?" The Gwynedd News, 4:3 (May-June 2005): 5.———."Heidelberg and Westminster two Reformed Confessions part 3: the Shorter Catechism." New Horizons, 26:3 (March 2005): 12-13.———."Heidelberg and Westminster two Reformed Confessions part 2: the Heidelberg Catechism." New Horizons, 26:2, (February 2005): 14-15.———."Heidelberg and Westminster: Two Reformed Confessions part 1: Historical Background". New Horizons, 26:1, (January 2005): 12-13.———."A Very Brief History of Psalm Singing". The Gwynedd News, 4:1 (January-February 2005): 6.———."Westminster Assembly 2004." The Presbyterian Banner. (January-February 2005): 9.———."Small Groups Ancient and Modern". The Gwynedd News, 3:8 (November-December (2004): 4.———."Creators For the Creator: A Biblical Reflection on the Christian and the Arts part 1," The Monthly Record of the Free Church of Scotland, (August 1998): 169-170. ———."Creators For the Creator: A Biblical Reflection on the Christian and the Arts part 2," The Monthly Record of the Free Church of Scotland, (September 1998): 192-193.
_____. "Selected Bibliography," In Justified in Christ: God's Plan For Us in Justification, edited by K. Scott Oliphint, 193-201. Fearn: Mentor, Christian Focus Publications, 2007._____. "Daniel Wilson," In Biographical Dictionary of Evangelicals, edited by Timothy Larsen, 744-745. Downers Grove, Ill: InterVarsity Press, 2003._____. Anchored in the Storm: Faith at Work in the Trials of Life, edited by Irene Howa. Christian Focus Publications; 1996._____. " Kirk and State in Canada: The Struggle for Recognition, 1790-1854, " in Studies in Canadian Evangelical Renewal: Essays in Honour of Ian S. Rennie, edited by Kevin Quast and John Vissers, 228-236. Scarborough, Ontario: FT Publications, 1996.
———. Review of An Evangelical Calvinist in the Academy by A. Donald MacLeod. W. Stanford Reid. Scottish Bulletin of Evangelical Theology, 24:2, (Autumn 2006): 237-238.———. Review of Reformed Theology: Identity and Ecumenicity edited by Wallace M. Alston Jr. and Michael Welker. Scottish Bulletin of Evangelical Theology, 23:1, (Spring 2005): 81-82.
Bucey, Camden. The Founders of the Free Church of Scotland. Reformed Forum, September 13, 2011. Accessed September 2, 2011.Trueman, Byrd, and Pruitt. Living La Vida Shatner. Mortification of Spin, February 4, 2015. Accessed February 9, 2015.
Westminster Theological Seminary - 2960 Church Road, Glenside PA 19038 - 215-887-5511© Copyright/Privacy 2014 Westminster Theological SeminaryDesigned and Developed by Trinet Internet Solutions


text:
Richard Terry, 77
Richard D. Terry, 77, died Sunday, Sept. 30, 2012. Friends may call from 6 p.m. until 8 p.m. Friday, Oct. 5, 2012, at Botkin Funeral Home in Waverly. Graveside services will be 10 a.m. Saturday in the Mound Cemetery, Piketon, Ohio.
Donna Leadingham Owens, 74
Donna Leadingham Owens, 74, of Vanceburg, Ky., died Tuesday, Oct. 2, 2012, at her residence. Funeral arrangements are pending at Globe Funeral Chapel in Olive Hill, Ky. Condolences may be sent to the family at www.globefc.com.
Mildred Jenkins Bangert, 83
Mildred Nona (Jenkins) Bangert, age 83, passed away Monday, Oct. 1, 2012, at Riverside Methodist Hospital in Columbus Ohio. Funeral service will be held 11 a.m. Friday, Oct. 5, 2012, at the Welsh-American Heritage Museum in Oak Hill with burial to follow in C.M. Cemetery. Friends may call Thursday, October 4, 2012 from 4-7 p.m. and again from 10 a.m. on Friday, Oct. 5, 2012 until the time of the service at the Welsh-American Heritage Museum. Arrangements are under the direction of the Lewis-Gillum Funeral Home in Oak Hill. She loved flowers, trees and all living things, however, memorial contributions may be made in her memory to the Welsh-American Heritage Museum, 225 South Front St. Oak Hill, Ohio 45656 to support the continuance of annual Gymanfa Ganus for generations to come. Online condolences may be sent to www.e-k-lewisfuneral.com.
Doris Stacey, 82
Doris Lee Stacey, 82, of Vanceburg, Ky., died Monday, Oct. 1, 2012, in Southern Ohio Medical Center in Portsmouth, Ohio. Funeral arrangements are pending at Dickerson Funeral Home in Vanceburg, Ky. Condolences may be sent to the family at www.globefc.com.
Rosemary Beals Nance, 91
Rosemary Beals Nance, 91, of Coal Grove, died Monday, Oct. 1, 2012, at a local health care facility. Funeral services will be noon Friday, Oct. 5, 2012, at Phillips Funeral Home in Ironton. Interment will follow in Highland Memorial Gardens and visitation will be Friday from 10:30 a.m. until the time of the service at the funeral home.


text:
Share your LEGO creations, free!
Sign in
LEGO models my own creation MOCpages toys shop
Welcome to the world's greatest LEGO fan community!
Explore cool creations, share your own, and
have lots of fun
It's all free!
star wars
LEGO creations by
Joe H .
2,894 views
2009 sets part 1
2009 star wars set list so far echo base endor bunker sepratist shuttle clone wars Y-Wing venator class star destr...
774 views
267th AT-RT
the 267th AT-RT is slightly modified from the standard AT-RT. its stronger, slower and has more firepower but the driver is easily exposed...
1,251 views
267th V-19 Torrent fighter
... this is a V-19 torrent fighter that the new 267th legion use. they are much wider than standard V-19's, alot faster a...
1,624 views
267th venator (the Executioner) WIP
the exicutioner is my key venator in the 267th (new legion, changed from 495th) The Ve...
1,935 views
267th venator the Executioner final
the exicutioner is my key venator in the 267th (new legion, changed from 495th) The Venator-class Star Destroyer, ...
1,412 views
495th AT RT
The All Terrain Recon Transport (AT-RT) was a one-man bipedal walker used for reconnaissance and patrollin...
975 views
A-Wing fighter
a reference pic The A-wing was one of two new starfighters created for Return of the Jedi. Dubbed the A fighte...
991 views
ARC V-19 torrent
The V-19 Torrent starfighter was an assault fighter with exceptional speed and maneuverability used by the Galactic ...
2,263 views
battle of christophis
thisis my micro scale battle of christophis characters by stud color anakin: brown obi wa: gray captain ...
1,323 views
battle of hoth part 1
The Battle of Hoth was an important conflict in the Galactic Civil War, during which Echo Base on Hoth was destr...
1,443 views
battlefront 1 geonosis republic and CIS command posts
The Battle of Geonosis was the first battle between the Confederacy of Independent Systems and ...
583 views
bingo squad
this is bingo squad. an elite commando unit in the 267th. these guys will do anything to get what they came for. the team is lead by nigh...
2,050 views
CIS tatical droid (blue)
A tactical droid was a model of supervisor droid serving the Confederacy of Independent Systems during the Cl...
2,455 views
clone wars Fives and Echo
these are my clone wars Fives and echo they were the only 2 surviors from the attack from the new CIS commando dr...
1,333 views
commander flyer (my sigfig)
this is commander flyer of the 495th assualt legion. this is also my sigfig in my clone army. stats: height:...
676 views
commander flyer v2
this is comander flyer of the 267th. not many changes from the last version, apart from it looks easier to build. plz rate and com...
2,278 views
CW commander deviss
CT-65/91-6210, also known as Deviss, was a clone trooper commander, formerly a clone trooper captain who led K Company out of Comm...
937 views
decals for the 495th assault legion
here are my decals for the 495th assault legion from the top-bottom 495th trooper 495th heavy trooper 495th...
3,504 views
mini venator class star destroyer squadren
this is a squadren of venator star destroyers (4 total) the venator star destroyerswhere used in th...
1,869 views
mission naboo (micro-scale)
led by commander cody an captain rex, 4 at te's and a squad of clones advance to the capital city of n...
1,131 views
mission naboo (micro-scale) part 2 CIS outpost
this is CIS outpost in theed, it s also where the republic will next attack escorted by 4 AA...
935 views
my clone army
this is my mini clone army. It is made up from 11 troopers the legions i have used L-R: corscant guard, 212th bat...
1,368 views
order 66 vignette
Order 66 was one of a series of contingency orders that the clone troopers of the Grand Army of the Republic were trained to prepare...
1,321 views
rc scorch
my rc scorch customized with completly 100% my decals. i made them myself u can view them in my decals folder if you want proof...
1,405 views
rebel decals
more decals but these are my 1st set of rebel decals they include: A-wing pilot X-wing pilot blue squadren pilot B-wing pilot p...
794 views
red team and dio
this is showing off my team of red clone troopers in a short dio. i decided to make this look intersting by adding a background dio ...
973 views
republic commando sev and a clone trooper
this is my entry for the custom clone contest i have made rc sev and a clone trooper with visor my sev we...
810 views
republic commando sev and a clone trooper 2nd try
this is my sev and clone contest entry for the custom clone i have taken t...
1,587 views
republic gunship contest (closed)
i am holding a contest for the best laat/i gunship and the rules are as followed you are only alllowed two ent...
1,049 views
rookies vignette
this is my episode 5 rookies vignette the episode features rookie clones who have to alert kamino of any attacks but the rookies are...
818 views
stranded (a CW dio)
stranded on an unknown icy world, bingo squad are struggling to survive, with the icy effects taking itsd toll heavily, they try ...
1,202 views
the GAR
custom rex this is my army of the republic so far the leaders: commander cody, fox, captain rex plz rate and comment
936 views
tx-130 sabre class fighter tank
this is my tx-130 tank, it is roughly the same scale as the one used in battlefront 1, near the end when i was finishi...
1,025 views
ubain squad
this is ubain squad a fierce squad of republic commandos the members: cody, echo, scout, flashlight ubain squard features in 6...
1,501 views
ubain squad: mission to rhen var
in the outer rim, war rages out between the CIS and the REPUBLIC, meanwhile a small 4 man team a sent on a dangorous...
student teen kid toy play lego child video game hobby blocks construction toy legos fun games
LEGO models my own creation MOCpages toys shop
Your home page
LEGO creations
Favorite builders
About MOCpages
MOCpages is an unofficial, fan-created website. LEGO® and the brick configuration are property of
The LEGO Group
, which does not sponsor, own, or endorse this site.
©2002-2015 Sean Kenney Design Inc |
Privacy policy
Terms of use


text: Serving 18 beers on tap, nightly drink specials, live music by the newest and best upcoming bands Friday and Saturday night, plus we've got the hottest bartenders and servers in town! What better place to be than Johnny's Cathouse. Stop by during the afternoon for lunch specials and a game of pool in our upstairs bar area. If you're not at Johnny's, your missing out.


text:
Hill Country gets dusting of snow
1 inch of snow falls in Kerrville area
The Hill Country experienced a brief winter wonderland Friday.
Residents in Kerrville woke up to the first significant snowfall of 2013. A mix of light snow and sleet was reported during the overnight hours, but the mix turned into some snow flurries as the morning progressed.
At 3 a.m., Texas Department of Transportation crews were on Interstate 10 laying down a mixture of sand and gravel.
"They went out because it was starting to accumulate and they watched it really close until about 4, and nothing really stuck," said Kerrville Public Works, Director Charlie Hastings.
Hastings said a large amount of deicing material that was prepared for bridges was never put to use, which meant a somewhat normal but scenic commute to work.
Kerrville ISD was not in session, so no school buses had to navigate any potentially dangerous roads.
Local street crews reported "slushy" conditions on area roadways and only a few ice patches.
The snow was a surprise to Gary McMurray, who was visiting from North Carolina.
"I've been here four or five years in a row, and I haven't seen anything like this," McMurray said.
"We moved out here a couple of years ago because of the climate, but this is the first time that I've seen snow in about three years," said Kerrville resident Ray Steinman.
Copyright 2013 by KSAT.com All rights reserved. This material may not be published, broadcast, rewritten or redistributed.


text:
Parsing the
Described by scientists John Flynn, Sterling Nesbitt, Michael Parrish, Lovasoa Ranivoharimanana and Andre Wyss, a complete skull of a new species of this enigmatic creature confirms that it is not a dinosaur. Instead, this creature, which lived between approximately 237 and 216 million years ago and is named Azendohsaurus madagaskarensis, was an archosauromorph—a member of a diverse group in which the dinosaur family tree is nested along with other creatures—which had independently evolved some of the features seen in the precursors of the immense sauropod dinosaurs and early ornithischian dinosaurs. This is shown most prominently by its teeth. They are leaf-shaped and are marked by a series of notches well-suited to chopping up leaves, meaning that this type of tooth evolved in several lineages of creatures which had been diverging from each other for millions of years.
This reassessment of Azendohsaurus has important implications for how paleontologists identify early dinosaurs. Previously the peculiar tooth type seen in this creature was thought to be an identifying feature of some early dinosaur types, but if it evolved more than once then isolated teeth and bits of jaw can no longer be taken as those of early dinosaur without further evidence. By being better able to diagnose fragments from the Middle and Late Triassic sites that harbor early dinosaurs, their ancestors and the disparate creatures they lived alongside, paleontologists will better able to understand the evolution of dinosaurs.
FLYNN, J., NESBITT, S., MICHAEL PARRISH, J., RANIVOHARIMANANA, L., & WYSS, A. (2010). A new species of Azendohsaurus (Diapsida: Archosauromorpha) from the Triassic Isalo Group of southwestern Madagascar: cranium and mandible Palaeontology, 53 (3), 669-688 DOI: 10.1111/j.1475-4983.2010.00954.x


text:
BOB361 transformed a former goldsmithery into a pleasant living/working environment. Partial demolition helped in providing a larger permeability and plenty of light and ventilation that is needed by the internal spaces to become suitable for in their new role. The linear organization distributes the spaces along a gradual progression that takes the visitor from the public areas to semipublic courtyards, and finally the more private lofts and gardens.
The architects describe their project as a Symbioses of an office building and a landscape gardenConsidering the urban anchoring of the site, the angles of this building block are the regulating elements. The VDAB-project anchors itself with the existing context on the corner of the Noordlaan-Drie Koningenstraat, which is in direct relation with various public functions (post, ministry of finances), located near the main road. It is an intuitive meeting point located on a wide footpath. The second angle is the location for a possible extension and is at present, included in the project's garden.
Subscribe to our Newsletter


text:
Search Results
SexVeninder SiteRip
24 Videos | 3.13 GB
SexVeninder.dk is Denmark's first ekskulsive pigsex website with 100% Danish girls
Download for Free »
PureNudism SiteRip
Pure Nudism Site Rip
106 Videos | 15,5 GB
Proving Free Nudist Pictures & Nudist Videos for Nudism Community Worldwide. From family, beach to nudist FKK classic galleries, we provide free and membership-based naturist resources for communities online. Nudism is our true concern.
Download for Free »
SoccerMilfs – SITERIP
Soccer Milfs Site Rip
42 Videos | 6 GB
SoccerMilfs – Where horny moms play with balls!
When the husbands are at work and the kids are away the milfs will play.
Download for Free »
EuroHumpers Pics SITERIP
Euro Humpers Picture Site Rip
24 Sets | 883 MB
We're American college kids who left the USA in the pursuit of education (actually, partying). While we were out here, we got the genius idea of shooting porn. What better way to get as close to the girls as possible, thAn to try and fuck them on camera? It takes a little work, but the girls over here are a lot more sexual than the college coeds we're used to banging in the USA.
Download for Free »
EuroHumpers – SITERIP
Euro Humpers Site Rip
22 Videos | 6.74 GB
We're American college kids who left the USA in the pursuit of education (actually, partying). While we were out here, we got the genius idea of shooting porn. What better way to get as close to the girls as possible, thAn to try and fuck them on camera? It takes a little work, but the girls over here are a lot more sexual than the college coeds we're used to banging in the USA. Firstly, these girls aren't as spoiled, they didn't grow up as rich as USA girls. Secondly, sex and porn isn't looked down on as much or frowned upon. That creates the perfect environment for us to fuck them and film it. We love it so much, we took a year off from school to make this website, so check out our new episodes every week! If our parents see this, they will fucking kill us, that's why we wear MASKS!
Download for Free »
ShyTeachersPet – SITERIP
Shy Teachers Pet Site Rip
46 Videos | 7 GB
Lonely little Cytheria was in the boys locker room alone when the gym coach approached her! He asked why she was all alone in the locker room doing her homework. Cytheria said that the other kids picked on her and she felt very lonely! So the gym coach being the good fellow that he is gave her some love and affection that she needed! He plunged his cock deep into her teen pussy and then filled her up special with his creamy man juice!
Download for Free »
ScandicCash – SITERIP
Scandic Cash Site Rip
486 Videos | 80.57 GB
ScandicCash offers a great selection of unique, great converting sites with exclusive content from Denmark. Our sites do very well on Scandanavian traffic as well as on international traffic due to the unique nature of our websites. All our sites are available in both Danish and English and are filled with high quality content.
Download for Free »
FuckStudies SiteRip
Fuck Studies Site Rip
45 Videos | 40.39 GB
Parents send their kids to college to learn but studying SUCKS! Hours spent bent over books when the girls really want to get bent over their desk and fucked hard! Inside Fuck Studies you will find super horny COEDS bored of class and ready to give up the ass to an upper classman.
Download for Free »
Fubilov – SITERIP
Fubilov Site Rip
135 Videos | 52.82 GB
Fubilov stands for Fuck You Bitch, I Leaked Our Video! Fubilov is an Ex-Girlfriend porn site where 1000s of guys upload their amateur sex videos that they made with (or of) their Ex-Girlfriends, usually to take Revenge on the Girlfriend for cheating on them or for breaking up with them, or just to show off their hot (ex) girlfriends.
We also get a lot of submissions from hot amateur girls that need some extra money and provide us with their hot self-shot pictures and videos in exchange for some cash. In addition our archive has some of the hottest leaked and hacked private pics and videos from social networking and photo-upload sites.
Download for Free »
XRatedMilfs – SITERIP
X Rated Milfs Site Rip
188 Videos | 27.90 GB
We've searched high and low to find the sexiest MILFs, the most desperate housewives and the hottest soccer Moms who just can't get enough of that rock hard cock!
When the kids are away, these Moms can play! Get ready for real desperate housewives & hardcore action!
Download for Free »


text:
August 1, 2015
A Round Rock man has been sentenced to life in prison on his ninth conviction for driving while intoxicated.
Bobby Joe Stovall was sentenced over a 2009 DWI wreck that left his passenger hurt. Round Rock police says the 52-year-old Stovall had a blood alcohol level four times the legal limit for driving.
To comment, the following rules must be followed:
Comments may be monitored for inappropriate content, but the station is under no legal obligation to do so.
If you believe a comment violates the above rules, please use the Flagging Tool to alert a Moderator.
Flagging does not guarantee removal.
Multiple violations may result in account suspension.
Decisions to suspend or unsuspend accounts are made by Station Moderators.
Questions may be sent to email@example.com. Please provide detailed information.
Click Here to access the online Public Inspection File
Viewers with disabilities can get assistance accessing this station's FCC Public Inspection File by contacting the station with the information listed below. Questions or concerns relating to the accessibility of the FCC's online public file system should be directed to the FCC at 888-225-5322, 888-835-5322 (TTY), or firstname.lastname@example.com.


text:
The new Google Earth plug-in for the browser has proved hugely popular. It has allowed Google Maps developers to include the added features of Google Earth within their mash-ups. If you are not a developer and you wish to add Google Earth to your own website or blog you now can as well thanks to the work of Street Cities and Google Earth Hacks.
Street Cities
Street Cities combines Google Street View and the Google Earth Browser to create a dual map that lets you view locations simultaneously on the ground and in the air. You can navigate around the Google Map in Street View and the Google Earth plug-in map follows your movements. There is something quite magical in watching the Google Earth plug-in map rotate as you turn around in Street View.
You can create your own dual map by selecting a location. Street Cities then produces the map and fa ew lines of code which you can use to embed the map in your own website or blog.
Google Earth Hacks
Google Earth Hacks have added the option to view their collections via the Google Earth browser plug-in. When you choose the Google Earth plug-in option the code to embed the map in your website or blog appears above the map.
Google Earth Hacks has a huge repository of geo-tagged collections. You are bound to find a collection that reflects your interests and now you can add this feature rich content to your own website simply by cutting and pasting a few lines of code.