1461120197-f425627d-217d-482d-939c-7403d9734acd

1.-8. (canceled)
9. A system, comprising:
a memory; and
a processor programmed to:
provide a directory operational block data structure within the memory that allows configuration of a directory of a file system at an operating-system level with at least one executable program to be executed in response to configurable operating-system level directory events associated with the directory;
attach, within the directory operational block data structure, a first program to execute in response to a specified directory event; and
execute, at the operating-system level, the attached first program in response to detection of the specified directory event.
10. The system of claim 9, where in being programmed to attach, within the directory operational block data structure, the first program to execute in response to the specified directory event, the processor is programmed to attach the first program to execute in response to the specified directory event in an order specified by a first execution sequence identifier and the processor is further programmed to:
attach, within the directory operational block data structure, a second program to execute in response to the specified directory event in an order specified by a second execution sequence identifier.
11. The system of claim 10, where in being programmed to execute, at the operating-system level, the attached first program in response to the detection of the specified directory event, the processor is programmed to execute the attached first program in a sequence with the attached second program based upon the order specified by the first and second execution sequence identifiers.
12. The system of claim 9, where in being programmed to attach, within the directory operational block data structure, the first program to execute in response to the specified directory event, the processor is programmed to:
assign the first program to a position in the directory operational block data structure associated with an execution sequence identifier; and
map the first program to a directory event trigger within the directory operational block data structure that identifies the specified directory event.
13. The system of claim 9, where the directory operational block data structure is configurable with at least one permission criterion for authorization to attach programs to the directory operational block data structure for execution in response to directory events and where in being programmed to attach, within the directory operational block data structure, the first program to execute in response to the specified directory event, the processor is programmed to:
determine a user identifier of a user issuing a configuration command for the directory operational block data structure;
determine whether the identified user has permission to attach the programs to the directory operational block data structure based upon the at least one permission criterion; and
attach, within the directory operational block data structure, the first program to execute in response to the specified directory event in response to determining that the user has permission to attach the programs to the directory operational block data structure
14. The system of claim 9, where in being programmed to execute, at the operating-system level, the attached first program in response to the detection of the specified directory event, the processor is programmed to execute the attached first program at the operating-system level in one of a safe mode and a journaled mode.
15. The system of claim 9, where the attached first program comprises a script and where in being programmed to execute, at the operating-system level, the attached first program in response to the detection of the specified directory event, the processor is programmed to:
validate that the script is compliant with scripting requirements for an operating system executed within the operating-system level; and
execute the script in response to the script being validated as compliant with scripting requirements for the operating system.
16. The system of claim 9, where in being programmed to execute, at the operating-system level, the attached first program in response to the detection of the specified directory event, the processor is programmed to:
determine whether execution of programs identified within the directory operational block data structure is enabled; and
execute the attached first program in response to determining that the execution of programs within the directory operational block data structure is enabled.
17. A computer program product, comprising:
a computer readable storage medium having computer readable program code embodied therewith, where the computer readable program code when executed on a computer causes the computer to:
provide a directory operational block data structure that allows configuration of a directory of a file system at an operating-system level with at least one executable program to be executed in response to configurable operating-system level directory events associated with the directory;
attach, within the directory operational block data structure, a first program to execute in response to a specified directory event; and
execute, at the operating-system level, the attached first program in response to detection of the specified directory event.
18. The computer program product of claim 17, where in causing the computer to attach, within the directory operational block data structure, the first program to execute in response to the specified directory event, the computer readable program code when executed on the computer causes the computer to attach the first program to execute in response to the specified directory event in an order specified by a first execution sequence identifier and the computer readable program code when executed on the computer further causes the computer to:
attach, within the directory operational block data structure, a second program to execute in response to the specified directory event in an order specified by a second execution sequence identifier.
19. The computer program product of claim 18, where in causing the computer to execute, at the operating-system level, the attached first program in response to the detection of the specified directory event, the computer readable program code when executed on the computer causes the computer to execute the attached first program in a sequence with the attached second program based upon the order specified by the first and second execution sequence identifiers.
20. The computer program product of claim 17, where in causing the computer to attach, within the directory operational block data structure, the first program to execute in response to the specified directory event, the computer readable program code when executed on the computer causes the computer to:
assign the first program to a position in the directory operational block data structure associated with an execution sequence identifier; and
map the first program to a directory event trigger within the directory operational block data structure that identifies the specified directory event.
21. The computer program product of claim 17, where the directory operational block data structure is configurable with at least one permission criterion for authorization to attach programs to the directory operational block data structure for execution in response to directory events and where in causing the computer to attach, within the directory operational block data structure, the first program to execute in response to the specified directory event, the computer readable program code when executed on the computer causes the computer to:
determine a user identifier of a user issuing a configuration command for the directory operational block data structure;
determine whether the identified user has permission to attach the programs to the directory operational block data structure based upon the at least one permission criterion; and
attach, within the directory operational block data structure, the first program to execute in response to the specified directory event in response to determining that the user has permission to attach the programs to the directory operational block data structure
22. The computer program product of claim 17, where in causing the computer to execute, at the operating-system level, the attached first program in response to the detection of the specified directory event, the computer readable program code when executed on the computer causes the computer to execute the attached first program at the operating-system level in one of a safe mode and a journaled mode.
23. The computer program product of claim 17, where the attached first program comprises a script and where in causing the computer to execute, at the operating-system level, the attached first program in response to the detection of the specified directory event, the computer readable program code when executed on the computer causes the computer to:
validate that the script is compliant with scripting requirements for an operating system executed within the operating-system level; and
execute the script in response to the script being validated as compliant with scripting requirements for the operating system.
24. The computer program product of claim 17, where in causing the computer to execute, at the operating-system level, the attached first program in response to the detection of the specified directory event, the computer readable program code when executed on the computer causes the computer to:
determine whether execution of programs identified within the directory operational block data structure is enabled; and
execute the attached first program in response to determining that the execution of programs within the directory operational block data structure is enabled.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A method of estimating a step length, comprising:
under control of one or more processors configured with executable instructions:
receiving sensor data from a sensor;
estimating a step frequency from the sensor data; and
calculating a step length of a step based at least in part on a nonlinear combination of the estimated step frequency and a predetermined function of the sensor data.
2. The method of claim 1, further comprising:
determining a type of movement of a user that the sensor measures, the type of movement being selected from a group consisting of walking, jogging and running; and
selecting a step model based on the determined type of movement of the user.
3. The method of claim 2, wherein selecting the step model is further based on personal information of the user, a position of the sensor, a type of shoes that the user wears andor a type of surface on which the user moves, wherein the personal information of the user comprises an age of the user, a height of the user, a weight of the user andor a gender of the user, and the position of the sensor comprises a position close to a body part of the user, a pocket of the user’s clothes or a bag of the user.
4. The method of claim 2, wherein determining the type of movement of the user is based at least in part on the estimated step frequency and the calculated step length.
5. The method of claim 2, wherein calculating the step length comprises calculating the step length based on the selected step model.
6. The method of claim 2, further comprising:
detecting a change in the type of movement to a new type of movement; and
selecting a new step model based on the new type of movement.
7. The method of claim 1, wherein the estimating comprises:
detecting salient points of a same type from the sensor data;
estimating the step frequency based on a time interval between the salient points of the same type in the sensor data.
8. The method of claim 7, further comprising filtering the sensor data using a low-pass filter prior to detecting the salient points in the sensor data.
9. The method of claim 8, wherein the low-pass filter comprises a Finite Impulse Response (FIR) filter andor a Biorthogonal Spline Wavelet (BSW) filter.
10. The method of claim 7, wherein estimating the step frequency comprises:
determining that the time interval between the detected salient points is less than a predetermined threshold; and
in response to determining that the time interval between the detected salient points is less than the predetermined threshold, detecting a new salient point that is located outside the time interval between the detected turned points, and estimating the step frequency based on a new time interval between the new salient point and one of the detected salient points.
11. The method of claim 7, wherein estimating the frequency comprises:
determining that the time interval between the detected salient points is greater than a predetermined threshold; and
in response to determining that the time interval between the detected salient points is greater than the predetermined threshold, detecting a new salient point that is located within the time interval between the detected salient points, and estimating the step frequency based on a new time interval between the new salient point and one of the detected salient points.
12. The method of claim 1, further comprising:
determining a condition associated with a first computing device that receives the sensor data from the sensor;
performing the estimating andor the calculating at the first computing device or a second computing device communicatively connected to the first computing device based on the determining.
13. The method of claim 12, wherein the condition associated with the first computing device comprises an application response latency, a power reserve, a processor speed, a CPU occupancy rate, andor a network bandwidth or speed between the first computing device and the second computing device.
14. One or more computer-readable media configured with computer-executable instructions that, when executed by one or more processors, configure the one or more processors to perform acts comprising:
determining an area of interest in which a user intends to navigate;
obtaining a map covering at least a portion of the determined area of interest; and
determining a location of the user on the obtained map based on a detection of a plurality of steps the user has made and an estimation of respective step lengths of the plurality of steps.
15. The one or more computer-readable media of claim 14, further comprising providing a recommendation to the user through a computing device based on the determined location, the recommendation comprising an advertisement related to the determined location.
16. The one or more computer-readable media of claim 14, wherein the determined area of interest comprises an indoor area with little or no signal of a Global Positioning System (GPS), and determining the location of the user within the determined area of interest is performed using local sensors without using GPS data.
17. The one or more computer-readable media of claim 14, further comprising:
receiving location information from one or more devices; and
updating the determined location based on the received location information.
18. The one or more computer-readable media of claim 17, further comprising updating a step model that is used for the detection of the plurality of steps the user has made and the estimation of respective step lengths for the plurality of steps in response to determining that a difference between the determined location and the updated location is greater than a predetermined threshold.
19. The one or more computer-readable media of claim 14, wherein determining the location of the user comprises, for each step of the plurality of steps:
receiving acceleration readings from an accelerometer;
estimating a step frequency from the received acceleration readings; and
calculating a step length of the respective step based at least in part on a combination of a nonlinear function of the estimated step frequency and a linear or nonlinear function of the acceleration readings.
20. A system comprising:
one or more processors;
memory, communicatively coupled to the one or more processors, storing instructions that, when executed by the one or more processors, configure the one or more processors to perform acts comprising:
displaying a map representing a predetermined scope of an area that covers a current location of a user;
receiving an indication of a destination location on the displayed map from the user; and
providing live instructions to the user to route the user to the destination location without using a Global Positioning System (GPS), providing the live instructions comprising updating a new location of the user based on a detection of a plurality of steps and an estimation of respective step lengths of the plurality of steps made by the user.