FBSession Class Reference
| Inherits from | NSObject |
| Declared in | FBSession.h |
Overview
@class FBSession
@abstract
The FBSession
object is used to authenticate a user and manage the user’s session. After
initializing a FBSession
object the Facebook App ID and desired permissions are stored.
Opening the session will initiate the authentication flow after which a valid user session
should be available and subsequently cached. Closing the session can optionally clear the
cache.
If an FBRequest request requires user authorization then an FBSession
object should be used.
@discussion
Instances of the FBSession
class provide notification of state changes in the following ways:
Callers of certain
FBSession
methods may provide a block that will be called back in the course of state transitions for the session (e.g. login or session closed).The object supports Key-Value Observing (KVO) for property changes.
Tasks
Creating a session
-
– init
@method
-
– initWithPermissions:
@method
-
– initWithAppID:permissions:urlSchemeSuffix:tokenCacheStrategy:
@method
-
– initWithAppID:permissions:defaultAudience:urlSchemeSuffix:tokenCacheStrategy:
@method
-
isOpen
Indicates whether the session is open and ready for use.
property -
state
Detailed session state
property -
appID
Identifies the Facebook app which the session object represents.
property -
urlSchemeSuffix
Identifies the URL Scheme Suffix used by the session. This is used when multiple iOS apps share a single Facebook app ID.
property -
accessToken
The access token for the session object.
property -
expirationDate
The expiration date of the access token for the session object.
property -
permissions
The permissions granted to the access token during the authentication flow.
property -
loginType
Specifies the login type used to authenticate the user.
property -
accessTokenData
Gets the FBAccessTokenData for the session
property -
declinedPermissions
@abstract Returns a collection of permissions that have been declined by the user for this given session instance.
property
Instance methods
-
– openWithCompletionHandler:
Opens a session for the Facebook.
-
– openWithBehavior:completionHandler:
Logs a user on to Facebook.
-
– openFromAccessTokenData:completionHandler:
Imports an existing access token and opens the session with it.
-
– close
@abstract Closes the local in-memory session object, but does not clear the persisted token cache.
-
– closeAndClearTokenInformation
@abstract Closes the in-memory session, and clears any persisted cache related to the session.
-
– reauthorizeWithPermissions:behavior:completionHandler:
@abstract Reauthorizes the session, with additional permissions.
-
– reauthorizeWithReadPermissions:completionHandler:
@abstract Reauthorizes the session, with additional permissions.
-
– reauthorizeWithPublishPermissions:defaultAudience:completionHandler:
@abstract Reauthorizes the session, with additional permissions.
-
– requestNewReadPermissions:completionHandler:
@abstract Requests new or additional read permissions for the session.
-
– requestNewPublishPermissions:defaultAudience:completionHandler:
@abstract Requests new or additional write permissions for the session.
-
– refreshPermissionsWithCompletionHandler:
Refreshes the current permissions for the session.
-
– handleOpenURL:
@abstract A helper method that is used to provide an implementation for [UIApplicationDelegate application:openURL:sourceApplication:annotation:]. It should be invoked during the Facebook Login flow and will update the session information based on the incoming URL.
-
– handleDidBecomeActive
@abstract A helper method that is used to provide an implementation for [UIApplicationDelegate applicationDidBecomeActive:] to properly resolve session state for the Facebook Login flow, specifically to support app-switch login.
-
– setStateChangeHandler:
@abstract Assign the block to be invoked for session state changes.
-
– hasGranted:
@abstract Returns true if the specified permission has been granted to this session.
Class methods
-
+ openActiveSessionWithAllowLoginUI:
@abstract This is the simplest method for opening a session with Facebook. Using sessionOpen logs on a user, and sets the static activeSession which becomes the default session object for any Facebook UI widgets used by the application. This session becomes the active session, whether open succeeds or fails.
-
+ openActiveSessionWithPermissions:allowLoginUI:completionHandler:
@abstract This is a simple method for opening a session with Facebook. Using sessionOpen logs on a user, and sets the static activeSession which becomes the default session object for any Facebook UI widgets used by the application. This session becomes the active session, whether open succeeds or fails.
-
+ openActiveSessionWithReadPermissions:allowLoginUI:completionHandler:
@abstract This is a simple method for opening a session with Facebook. Using sessionOpen logs on a user, and sets the static activeSession which becomes the default session object for any Facebook UI widgets used by the application. This session becomes the active session, whether open succeeds or fails.
-
+ openActiveSessionWithPublishPermissions:defaultAudience:allowLoginUI:completionHandler:
@abstract This is a simple method for opening a session with Facebook. Using sessionOpen logs on a user, and sets the static activeSession which becomes the default session object for any Facebook UI widgets used by the application. This session becomes the active session, whether open succeeds or fails.
-
+ activeSession
@abstract An application may get or set the current active session. Certain high-level components in the SDK will use the activeSession to set default session (e.g.
FBLoginView
,FBFriendPickerViewController
) -
+ setActiveSession:
@abstract An application may get or set the current active session. Certain high-level components in the SDK will use the activeSession to set default session (e.g.
FBLoginView
,FBFriendPickerViewController
) -
+ setDefaultAppID:
Set the default Facebook App ID to use for sessions. The app ID may be overridden on a per session basis.
-
+ defaultAppID
Get the default Facebook App ID to use for sessions. If not explicitly set, the default will be read from the application’s plist. The app ID may be overridden on a per session basis.
-
+ setDefaultUrlSchemeSuffix:
Set the default url scheme suffix to use for sessions. The url scheme suffix may be overridden on a per session basis.
-
+ defaultUrlSchemeSuffix
Get the default url scheme suffix used for sessions. If not explicitly set, the default will be read from the application’s plist. The url scheme suffix may be overridden on a per session basis.
-
+ renewSystemCredentials:
Issues an asychronous renewCredentialsForAccount call to the device Facebook account store.
Properties
accessToken
The access token for the session object.
@property (readonly, copy) NSString *accessToken
Discussion
Deprecated. Use the accessTokenData
property.
Declared In
FBSession.h
accessTokenData
Gets the FBAccessTokenData for the session
@property (readonly, copy) FBAccessTokenData *accessTokenData
Declared In
FBSession.h
appID
Identifies the Facebook app which the session object represents.
@property (readonly, copy) NSString *appID
Declared In
FBSession.h
declinedPermissions
@abstract Returns a collection of permissions that have been declined by the user for this given session instance.
@property (readonly, copy) NSArray *declinedPermissions
Discussion
@abstract Returns a collection of permissions that have been declined by the user for this given session instance.
@discussion A “declined” permission is one that had been requested but was either skipped or removed by the user during the login flow. Note that once the permission has been granted (either by requesting again or detected by a permissions refresh), it will be removed from this collection.
Declared In
FBSession.h
expirationDate
The expiration date of the access token for the session object.
@property (readonly, copy) NSDate *expirationDate
Discussion
Deprecated. Use the accessTokenData
property.
Declared In
FBSession.h
isOpen
Indicates whether the session is open and ready for use.
@property (readonly) BOOL isOpen
Declared In
FBSession.h
loginType
Specifies the login type used to authenticate the user.
@property (readonly) FBSessionLoginType loginType
Discussion
Deprecated. Use the accessTokenData
property.
Declared In
FBSession.h
Class Methods
activeSession
@abstract
An application may get or set the current active session. Certain high-level components in the SDK
will use the activeSession to set default session (e.g. FBLoginView
, FBFriendPickerViewController
)
+ (FBSession *)activeSession
Discussion
@abstract
An application may get or set the current active session. Certain high-level components in the SDK
will use the activeSession to set default session (e.g. FBLoginView
, FBFriendPickerViewController
)
@discussion
If sessionOpen* is called, the resulting FBSession
object also becomes the activeSession. If another
session was active at the time, it is closed automatically. If activeSession is called when no session
is active, a session object is instatiated and returned; in this case open must be called on the session
in order for it to be useable for communication with Facebook.
Declared In
FBSession.h
defaultAppID
Get the default Facebook App ID to use for sessions. If not explicitly set, the default will be read from the application’s plist. The app ID may be overridden on a per session basis.
+ (NSString *)defaultAppID
Discussion
@method
This method has been deprecated in favor of [FBSettings defaultAppID].
Declared In
FBSession.h
defaultUrlSchemeSuffix
Get the default url scheme suffix used for sessions. If not explicitly set, the default will be read from the application’s plist. The url scheme suffix may be overridden on a per session basis.
+ (NSString *)defaultUrlSchemeSuffix
Discussion
@method
This method has been deprecated in favor of [FBSettings defaultUrlSchemeSuffix].
Declared In
FBSession.h
openActiveSessionWithAllowLoginUI:
@abstract This is the simplest method for opening a session with Facebook. Using sessionOpen logs on a user, and sets the static activeSession which becomes the default session object for any Facebook UI widgets used by the application. This session becomes the active session, whether open succeeds or fails.
+ (BOOL)openActiveSessionWithAllowLoginUI:(BOOL)allowLoginUI
Parameters
- allowLoginUI
Sometimes it is useful to attempt to open a session, but only if no login UI will be required to accomplish the operation. For example, at application startup it may not be disirable to transition to login UI for the user, and yet an open session is desired so long as a cached token can be used to open the session. Passing NO to this argument, assures the method will not present UI to the user in order to open the session.
Discussion
@abstract This is the simplest method for opening a session with Facebook. Using sessionOpen logs on a user, and sets the static activeSession which becomes the default session object for any Facebook UI widgets used by the application. This session becomes the active session, whether open succeeds or fails.
Note, if there is not a cached token available, this method will present UI to the user in order to open the session via explicit login by the user.
@discussion Returns YES if the session was opened synchronously without presenting UI to the user. This occurs when there is a cached token available from a previous run of the application. If NO is returned, this indicates that the session was not immediately opened, via cache. However, if YES was passed as allowLoginUI, then it is possible that the user will login, and the session will become open asynchronously. The primary use for this return value is to switch-on facebook capabilities in your UX upon startup, in the case where the session is opened via cache.
Declared In
FBSession.h
openActiveSessionWithPermissions:allowLoginUI:completionHandler:
@abstract This is a simple method for opening a session with Facebook. Using sessionOpen logs on a user, and sets the static activeSession which becomes the default session object for any Facebook UI widgets used by the application. This session becomes the active session, whether open succeeds or fails.
+ (BOOL)openActiveSessionWithPermissions:(NSArray *)permissions allowLoginUI:(BOOL)allowLoginUI completionHandler:(FBSessionStateHandler)handler
Parameters
- permissions
An array of strings representing the permissions to request during the authentication flow. A value of nil indicates basic permissions. A nil value specifies default permissions.
- allowLoginUI
Sometimes it is useful to attempt to open a session, but only if no login UI will be required to accomplish the operation. For example, at application startup it may not be desirable to transition to login UI for the user, and yet an open session is desired so long as a cached token can be used to open the session. Passing NO to this argument, assures the method will not present UI to the user in order to open the session.
- handler
Many applications will benefit from notification when a session becomes invalid or undergoes other state transitions. If a block is provided, the FBSession object will call the block each time the session changes state.
Discussion
@abstract This is a simple method for opening a session with Facebook. Using sessionOpen logs on a user, and sets the static activeSession which becomes the default session object for any Facebook UI widgets used by the application. This session becomes the active session, whether open succeeds or fails.
@discussion Returns true if the session was opened synchronously without presenting UI to the user. This occurs when there is a cached token available from a previous run of the application. If NO is returned, this indicates that the session was not immediately opened, via cache. However, if YES was passed as allowLoginUI, then it is possible that the user will login, and the session will become open asynchronously. The primary use for this return value is to switch-on facebook capabilities in your UX upon startup, in the case where the session is opened via cache.
It is required that initial permissions requests represent read-only permissions only. If publish permissions are needed, you may use reauthorizeWithPermissions to specify additional permissions as well as an audience. Use of this method will result in a legacy fast-app-switch Facebook Login due to the requirement to separate read and publish permissions for newer applications. Methods and properties that specify permissions without a read or publish qualification are deprecated; use of a read-qualified or publish-qualified alternative is preferred.
Declared In
FBSession.h
openActiveSessionWithPublishPermissions:defaultAudience:allowLoginUI:completionHandler:
@abstract This is a simple method for opening a session with Facebook. Using sessionOpen logs on a user, and sets the static activeSession which becomes the default session object for any Facebook UI widgets used by the application. This session becomes the active session, whether open succeeds or fails.
+ (BOOL)openActiveSessionWithPublishPermissions:(NSArray *)publishPermissions defaultAudience:(FBSessionDefaultAudience)defaultAudience allowLoginUI:(BOOL)allowLoginUI completionHandler:(FBSessionStateHandler)handler
Parameters
- publishPermissions
An array of strings representing the publish permissions to request during the authentication flow.
- defaultAudience
Anytime an app publishes on behalf of a user, the post must have an audience (e.g. me, my friends, etc.) The default audience is used to notify the user of the cieling that the user agrees to grant to the app for the provided permissions.
- allowLoginUI
Sometimes it is useful to attempt to open a session, but only if no login UI will be required to accomplish the operation. For example, at application startup it may not be desirable to transition to login UI for the user, and yet an open session is desired so long as a cached token can be used to open the session. Passing NO to this argument, assures the method will not present UI to the user in order to open the session.
- handler
Many applications will benefit from notification when a session becomes invalid or undergoes other state transitions. If a block is provided, the FBSession object will call the block each time the session changes state.
Discussion
@abstract This is a simple method for opening a session with Facebook. Using sessionOpen logs on a user, and sets the static activeSession which becomes the default session object for any Facebook UI widgets used by the application. This session becomes the active session, whether open succeeds or fails.
@discussion Returns true if the session was opened synchronously without presenting UI to the user. This occurs when there is a cached token available from a previous run of the application. If NO is returned, this indicates that the session was not immediately opened, via cache. However, if YES was passed as allowLoginUI, then it is possible that the user will login, and the session will become open asynchronously. The primary use for this return value is to switch-on facebook capabilities in your UX upon startup, in the case where the session is opened via cache.
Declared In
FBSession.h
openActiveSessionWithReadPermissions:allowLoginUI:completionHandler:
@abstract This is a simple method for opening a session with Facebook. Using sessionOpen logs on a user, and sets the static activeSession which becomes the default session object for any Facebook UI widgets used by the application. This session becomes the active session, whether open succeeds or fails.
+ (BOOL)openActiveSessionWithReadPermissions:(NSArray *)readPermissions allowLoginUI:(BOOL)allowLoginUI completionHandler:(FBSessionStateHandler)handler
Parameters
- readPermissions
An array of strings representing the read permissions to request during the authentication flow. It is not allowed to pass publish permissions to this method.
- allowLoginUI
Sometimes it is useful to attempt to open a session, but only if no login UI will be required to accomplish the operation. For example, at application startup it may not be desirable to transition to login UI for the user, and yet an open session is desired so long as a cached token can be used to open the session. Passing NO to this argument, assures the method will not present UI to the user in order to open the session.
- handler
Many applications will benefit from notification when a session becomes invalid or undergoes other state transitions. If a block is provided, the FBSession object will call the block each time the session changes state.
Discussion
@abstract This is a simple method for opening a session with Facebook. Using sessionOpen logs on a user, and sets the static activeSession which becomes the default session object for any Facebook UI widgets used by the application. This session becomes the active session, whether open succeeds or fails.
@discussion Returns true if the session was opened synchronously without presenting UI to the user. This occurs when there is a cached token available from a previous run of the application. If NO is returned, this indicates that the session was not immediately opened, via cache. However, if YES was passed as allowLoginUI, then it is possible that the user will login, and the session will become open asynchronously. The primary use for this return value is to switch-on facebook capabilities in your UX upon startup, in the case where the session is opened via cache.
Declared In
FBSession.h
renewSystemCredentials:
Issues an asychronous renewCredentialsForAccount call to the device Facebook account store.
+ (void)renewSystemCredentials:(FBSessionRenewSystemCredentialsHandler)handler
Parameters
- handler
The completion handler to call when the renewal is completed. The handler will be invoked on the main thread.
Discussion
@method
This can be used to explicitly renew account credentials on iOS 6 devices and is provided
as a convenience wrapper around [ACAccountStore renewCredentialsForAccount:completion]
. Note the
method will not issue the renewal call if the the Facebook account has not been set on the device, or
if access had not been granted to the account (though the handler wil receive an error).
This is safe to call (and will surface an error to the handler) on versions of iOS before 6 or if the user logged in via Safari or Facebook SSO.
Declared In
FBSession.h
setActiveSession:
@abstract
An application may get or set the current active session. Certain high-level components in the SDK
will use the activeSession to set default session (e.g. FBLoginView
, FBFriendPickerViewController
)
+ (FBSession *)setActiveSession:(FBSession *)session
Parameters
- session
The FBSession object to become the active session
Discussion
@abstract
An application may get or set the current active session. Certain high-level components in the SDK
will use the activeSession to set default session (e.g. FBLoginView
, FBFriendPickerViewController
)
@discussion If an application prefers the flexibilility of directly instantiating a session object, an active session can be set directly.
Declared In
FBSession.h
setDefaultAppID:
Set the default Facebook App ID to use for sessions. The app ID may be overridden on a per session basis.
+ (void)setDefaultAppID:(NSString *)appID
Parameters
- appID
The default Facebook App ID to use for
methods.
Discussion
@method
This method has been deprecated in favor of [FBSettings setDefaultAppID].
Declared In
FBSession.h
setDefaultUrlSchemeSuffix:
Set the default url scheme suffix to use for sessions. The url scheme suffix may be overridden on a per session basis.
+ (void)setDefaultUrlSchemeSuffix:(NSString *)urlSchemeSuffix
Parameters
- urlSchemeSuffix
The default url scheme suffix to use for
methods.
Discussion
@method
This method has been deprecated in favor of [FBSettings setDefaultUrlSchemeSuffix].
Declared In
FBSession.h
Instance Methods
close
@abstract Closes the local in-memory session object, but does not clear the persisted token cache.
- (void)close
Discussion
@abstract Closes the local in-memory session object, but does not clear the persisted token cache.
Declared In
FBSession.h
closeAndClearTokenInformation
@abstract Closes the in-memory session, and clears any persisted cache related to the session.
- (void)closeAndClearTokenInformation
Discussion
@abstract Closes the in-memory session, and clears any persisted cache related to the session.
Declared In
FBSession.h
handleDidBecomeActive
@abstract A helper method that is used to provide an implementation for [UIApplicationDelegate applicationDidBecomeActive:] to properly resolve session state for the Facebook Login flow, specifically to support app-switch login.
- (void)handleDidBecomeActive
Discussion
@abstract A helper method that is used to provide an implementation for [UIApplicationDelegate applicationDidBecomeActive:] to properly resolve session state for the Facebook Login flow, specifically to support app-switch login.
Declared In
FBSession.h
handleOpenURL:
@abstract A helper method that is used to provide an implementation for [UIApplicationDelegate application:openURL:sourceApplication:annotation:]. It should be invoked during the Facebook Login flow and will update the session information based on the incoming URL.
- (BOOL)handleOpenURL:(NSURL *)url
Parameters
- url
The URL as passed to [UIApplicationDelegate application:openURL:sourceApplication:annotation:].
Discussion
@abstract A helper method that is used to provide an implementation for [UIApplicationDelegate application:openURL:sourceApplication:annotation:]. It should be invoked during the Facebook Login flow and will update the session information based on the incoming URL.
Declared In
FBSession.h
hasGranted:
@abstract Returns true if the specified permission has been granted to this session.
- (BOOL)hasGranted:(NSString *)permission
Parameters
- permission
the permission to verify.
Discussion
@abstract Returns true if the specified permission has been granted to this session.
@discussion
This is a convenience helper for checking if pemission
is inside the permissions array.
Declared In
FBSession.h
init
@method
- (instancetype)init
Discussion
@method
@abstract Returns a newly initialized Facebook session with default values for the parameters to initWithAppID:permissions:urlSchemeSuffix:tokenCacheStrategy:.
Declared In
FBSession.h
initWithAppID:permissions:defaultAudience:urlSchemeSuffix:tokenCacheStrategy:
@method
- (instancetype)initWithAppID:(NSString *)appID permissions:(NSArray *)permissions defaultAudience:(FBSessionDefaultAudience)defaultAudience urlSchemeSuffix:(NSString *)urlSchemeSuffix tokenCacheStrategy:(FBSessionTokenCachingStrategy *)tokenCachingStrategy
Parameters
- appID
The Facebook App ID for the session. If nil is passed in the default App ID will be obtained from a call to [FBSession defaultAppID]. The default is nil.
- permissions
An array of strings representing the permissions to request during the authentication flow.
- defaultAudience
Most applications use FBSessionDefaultAudienceNone here, only specifying an audience when using reauthorize to request publish permissions.
- urlSchemeSuffix
The URL Scheme Suffix to be used in scenarious where multiple iOS apps use one Facebook App ID. A value of nil indicates that this information should be pulled from [FBSettings defaultUrlSchemeSuffix]. The default is nil.
- tokenCachingStrategy
Specifies a key name to use for cached token information in NSUserDefaults, nil indicates a default value of @“FBAccessTokenInformationKey”.
Discussion
@method
@abstract Following are the descriptions of the arguments along with their defaults when ommitted.
@discussion It is required that any single permission request request (including initial log in) represent read-only permissions or publish permissions only; not both. The permissions passed here should reflect this requirement. If publish permissions are used, then the audience must also be specified.
Declared In
FBSession.h
initWithAppID:permissions:urlSchemeSuffix:tokenCacheStrategy:
@method
- (instancetype)initWithAppID:(NSString *)appID permissions:(NSArray *)permissions urlSchemeSuffix:(NSString *)urlSchemeSuffix tokenCacheStrategy:(FBSessionTokenCachingStrategy *)tokenCachingStrategy
Parameters
- appID
The Facebook App ID for the session. If nil is passed in the default App ID will be obtained from a call to [FBSession defaultAppID]. The default is nil.
- permissions
An array of strings representing the permissions to request during the authentication flow.
- urlSchemeSuffix
The URL Scheme Suffix to be used in scenarious where multiple iOS apps use one Facebook App ID. A value of nil indicates that this information should be pulled from [FBSettings defaultUrlSchemeSuffix]. The default is nil.
- tokenCachingStrategy
Specifies a key name to use for cached token information in NSUserDefaults, nil indicates a default value of @“FBAccessTokenInformationKey”.
Discussion
@method
@abstract Following are the descriptions of the arguments along with their defaults when ommitted.
@discussion It is required that any single permission request request (including initial log in) represent read-only permissions or publish permissions only; not both. The permissions passed here should reflect this requirement.
Declared In
FBSession.h
initWithPermissions:
@method
- (instancetype)initWithPermissions:(NSArray *)permissions
Parameters
- permissions
An array of strings representing the permissions to request during the authentication flow.
Discussion
@method
@abstract Returns a newly initialized Facebook session with the specified permissions and other default values for parameters to initWithAppID:permissions:urlSchemeSuffix:tokenCacheStrategy:.
@discussion It is required that any single permission request request (including initial log in) represent read-only permissions or publish permissions only; not both. The permissions passed here should reflect this requirement.
Declared In
FBSession.h
openFromAccessTokenData:completionHandler:
Imports an existing access token and opens the session with it.
- (BOOL)openFromAccessTokenData:(FBAccessTokenData *)accessTokenData completionHandler:(FBSessionStateHandler)handler
Parameters
- accessTokenData
The token data. See
FBAccessTokenData
for construction methods.
- handler
A block to call with session state changes. The default is nil.
Discussion
@method
Declared In
FBSession.h
openWithBehavior:completionHandler:
Logs a user on to Facebook.
- (void)openWithBehavior:(FBSessionLoginBehavior)behavior completionHandler:(FBSessionStateHandler)handler
Parameters
- behavior
Controls whether to allow, force, or prohibit Facebook Login or Inline Facebook Login. The default is to allow Facebook Login, with fallback to Inline Facebook Login.
- handler
A block to call with session state changes. The default is nil.
Discussion
@method
Declared In
FBSession.h
openWithCompletionHandler:
Opens a session for the Facebook.
- (void)openWithCompletionHandler:(FBSessionStateHandler)handler
Parameters
- handler
A block to call with the state changes. The default is nil.
Discussion
@method
Declared In
FBSession.h
reauthorizeWithPermissions:behavior:completionHandler:
@abstract Reauthorizes the session, with additional permissions.
- (void)reauthorizeWithPermissions:(NSArray *)permissions behavior:(FBSessionLoginBehavior)behavior completionHandler:(FBSessionReauthorizeResultHandler)handler
Parameters
- permissions
An array of strings representing the permissions to request during the authentication flow. A value of nil indicates basic permissions. The default is nil.
- behavior
Controls whether to allow, force, or prohibit Facebook Login. The default is to allow Facebook Login and fall back to Inline Facebook Login if needed.
- handler
A block to call with session state changes. The default is nil.
Discussion
@abstract Reauthorizes the session, with additional permissions.
Methods and properties that specify permissions without a read or publish qualification are deprecated; use of a read-qualified or publish-qualified alternative is preferred (e.g. reauthorizeWithReadPermissions or reauthorizeWithPublishPermissions)
Declared In
FBSession.h
reauthorizeWithPublishPermissions:defaultAudience:completionHandler:
@abstract Reauthorizes the session, with additional permissions.
- (void)reauthorizeWithPublishPermissions:(NSArray *)writePermissions defaultAudience:(FBSessionDefaultAudience)defaultAudience completionHandler:(FBSessionReauthorizeResultHandler)handler
Parameters
- writePermissions
An array of strings representing the permissions to request during the authentication flow.
- defaultAudience
Specifies the audience for posts.
- handler
A block to call with session state changes. The default is nil.
Discussion
@abstract Reauthorizes the session, with additional permissions.
This method is a deprecated alias of [FBSession requestNewPublishPermissions:defaultAudience:completionHandler:]. Consider using [FBSession requestNewPublishPermissions:defaultAudience:completionHandler:], which is preferred for readability.
Declared In
FBSession.h
reauthorizeWithReadPermissions:completionHandler:
@abstract Reauthorizes the session, with additional permissions.
- (void)reauthorizeWithReadPermissions:(NSArray *)readPermissions completionHandler:(FBSessionReauthorizeResultHandler)handler
Parameters
- readPermissions
An array of strings representing the permissions to request during the authentication flow. A value of nil indicates basic permissions.
- handler
A block to call with session state changes. The default is nil.
Discussion
@abstract Reauthorizes the session, with additional permissions.
This method is a deprecated alias of [FBSession requestNewReadPermissions:completionHandler:]. Consider using [FBSession requestNewReadPermissions:completionHandler:], which is preferred for readability.
Declared In
FBSession.h
refreshPermissionsWithCompletionHandler:
Refreshes the current permissions for the session.
- (void)refreshPermissionsWithCompletionHandler:(FBSessionRequestPermissionResultHandler)handler
Parameters
- handler
Called after completion of the refresh.
Discussion
This will update the sessions' permissions array from the server. This can be useful if you want to make sure the local permissions are up to date.
Declared In
FBSession.h
requestNewPublishPermissions:defaultAudience:completionHandler:
@abstract Requests new or additional write permissions for the session.
- (void)requestNewPublishPermissions:(NSArray *)writePermissions defaultAudience:(FBSessionDefaultAudience)defaultAudience completionHandler:(FBSessionRequestPermissionResultHandler)handler
Parameters
- writePermissions
An array of strings representing the permissions to request during the authentication flow.
- defaultAudience
Specifies the audience for posts.
- handler
A block to call with session state changes. The default is nil.
Discussion
@abstract Requests new or additional write permissions for the session.
The handler, if non-nil, is called once the operation has completed or failed. This is in contrast to the
state completion handler used in [FBSession openWithCompletionHandler:] (and other open*
methods) which is called
for each state-change for the session.
Declared In
FBSession.h
requestNewReadPermissions:completionHandler:
@abstract Requests new or additional read permissions for the session.
- (void)requestNewReadPermissions:(NSArray *)readPermissions completionHandler:(FBSessionRequestPermissionResultHandler)handler
Parameters
- readPermissions
An array of strings representing the permissions to request during the authentication flow. A value of nil indicates basic permissions.
- handler
A block to call with session state changes. The default is nil.
Discussion
@abstract Requests new or additional read permissions for the session.
The handler, if non-nil, is called once the operation has completed or failed. This is in contrast to the
state completion handler used in [FBSession openWithCompletionHandler:] (and other open*
methods) which is called
for each state-change for the session.
Declared In
FBSession.h
setStateChangeHandler:
@abstract Assign the block to be invoked for session state changes.
- (void)setStateChangeHandler:(FBSessionStateHandler)stateChangeHandler
Parameters
- stateChangeHandler
the handler block.
Discussion
@abstract Assign the block to be invoked for session state changes.
@discussion
This will overwrite any state change handler that was already assigned. Typically,
you should only use this setter if you were unable to assign a state change handler explicitly.
One example of this is if you are not opening the session (e.g., using the open*
)
but still want to assign a FBSessionStateHandler
block. This can happen when the SDK
opens a session from an app link.
Declared In
FBSession.h


The code is run entirely in your browser, so don't feel
obligated to "crash the server", you'll only stub your
toe. Help, or examples:
12345678.
Ctrl-Enter to run.
cut/copy/paste/undo/redo with the usual shortcut keys
Tab does decent indenting.
Thanks to CodeMirror for the text editor.


About
Hello, my name is Naphtali Orare. I am an aspiring full-stack developer with a particular interest in angular. I'm generally a tech enthusiast, but also enjoy adventure. I love reading. Knowledge is power. In my still new journey in software development, I have completed some project. A description and link to each is provided.
Projects
Street-Food Project
This is a simple reproduction of the street-food website. It uses HTML5 and CSS3 technologies to get the job done. See the website here.
Photo-Gallery Project
This is a simple website that diaplays my collection of favorite photos. Also uses HTML5 and CSS3 technologies. Live site is here.


Clear Data
Load Data
Group on Country
Group on Year
Grouping off
Has Paging
Has ScrollbarV
Show Table


I've heard a Weapon Master can have more than one Favored weapon; is this true, and at what wm level is this possible if so?
At level 13 the unpublished WM feats come into play.
You get to choose an additional weapon of choice (providing you have 2 weapon focus feats). Also at level 13 you get +1 AB to weapon of choice and every 3 levels after.
Syrath
Does anyone know if this can be abused with a ranged weapon like a throwing axe?
Does anyone know if this can be abused with a ranged weapon like a throwing axe?
"For a weapon master, perfection is found in the mastery of a single MELEE weapon. A weapon master seeks to unite this weapon of choice with the body, to make them one, and to use the weapon as naturally and without thought as any other limb."
Even through this cheat, it's impossible to extend weapon master to ranged weapons or unarmed fight. _________________ If you call IGMS, Harm, Mestil's acid shield, the Bigby hands or Devastating Critical balanced in your post, don't expect me to like you.
I'm sorry about my bad english, I'm french. In every lie lies a part of truth.


DSL output statements¶
You can output variable-values or expressions in five ways:
-
Assign them to stream-record fields. For example,
$cumulative_sum = @sum
. For another example,$nr = NR
adds a field namednr
to each output record, containing the value of the built-in variableNR
as of when that record was ingested. -
Use emit1/emit/emitp/emitf to send out-of-stream variables' current values to the output record stream, e.g.
@sum += $x; emit1 @sum
which produces an extra record such assum=3.1648382
. These records, just like records from input file(s), participate in downstream then-chaining to other verbs. -
Use the print or eprint keywords which immediately print an expression directly to standard output or standard error, respectively. Note that
dump
,edump
,print
, andeprint
don't output records which participate inthen
-chaining; rather, they're just immediate prints to stdout/stderr. Theprintn
andeprintn
keywords are the same except that they don't print final newlines. Additionally, you can print to a specified file instead of stdout/stderr. -
Use the dump or edump keywords, which immediately print all out-of-stream variables as a JSON data structure to the standard output or standard error (respectively).
-
Use tee which formats the current stream record (not just an arbitrary string as with print) to a specific file.
For the first two options you are populating the output-records stream which feeds into the next verb in a then
-chain (if any), or which otherwise is formatted for output using --o...
flags.
For the last three options you are sending output directly to standard output, standard error, or a file.
Print statements¶
The print
statement is perhaps self-explanatory, but with a few light caveats:
-
There are four variants:
print
goes to stdout with final newline,printn
goes to stdout without final newline (you can include one using "\n" in your output string),eprint
goes to stderr with final newline, andeprintn
goes to stderr without final newline. -
Output goes directly to stdout/stderr, respectively: data produced this way do not go downstream to the next verb in a
then
-chain. (Useemit
for that.) -
Print statements are for strings (
print "hello"
), or things which can be made into strings: numbers (print 3
,print $a + $b
), or concatenations thereof (print "a + b = " . ($a + $b)
). Maps (in$*
, map-valued out-of-stream or local variables, and map literals) as well as arrays are printed as JSON. -
You can redirect print output to a file:
mlr --from myfile.dat put 'print > "tap.txt", $x'
- You can redirect print output to multiple files, split by values present in various records:
mlr --from myfile.dat put 'print > $a.".txt", $x'
See also Redirected-output statements for examples.
Dump statements¶
The dump
statement is for printing expressions, including maps, directly to stdout/stderr, respectively:
-
There are two variants:
dump
prints to stdout;edump
prints to stderr. -
Output goes directly to stdout/stderr, respectively: data produced this way do not go downstream to the next verb in a
then
-chain. (Useemit
for that.) -
You can use
dump
to output single strings, numbers, or expressions including map-valued data. Map-valued data are printed as JSON. -
If you use
dump
(oredump
) with no arguments, you get a JSON structure representing the current values of all out-of-stream variables. -
As with
print
, you can redirect output to files. -
See also Redirected-output statements for examples.
Tee statements¶
Records produced by a mlr put
go downstream to the next verb in your then
-chain, if any, or otherwise to standard output. If you want to additionally copy out records to files, you can do that using tee
.
The syntax is, by example:
mlr --from myfile.dat put 'tee > "tap.dat", $*' then sort -n index
First is tee >
, then the filename expression (which can be an expression such as "tap.".$a.".dat"
), then a comma, then $*
. (Nothing else but $*
is teeable.)
You can also write to a variable file name -- for example, you can split a single file into multiple ones on field names:
mlr --csv cat example.csv
color,shape,flag,k,index,quantity,rate yellow,triangle,true,1,11,43.6498,9.8870 red,square,true,2,15,79.2778,0.0130 red,circle,true,3,16,13.8103,2.9010 red,square,false,4,48,77.5542,7.4670 purple,triangle,false,5,51,81.2290,8.5910 red,square,false,6,64,77.1991,9.5310 purple,triangle,false,7,65,80.1405,5.8240 yellow,circle,true,8,73,63.9785,4.2370 yellow,circle,true,9,87,63.5058,8.3350 purple,square,false,10,91,72.3735,8.2430
mlr --csv --from example.csv put -q 'tee > $shape.".csv", $*'
mlr --csv cat circle.csv
color,shape,flag,k,index,quantity,rate red,circle,true,3,16,13.8103,2.9010 yellow,circle,true,8,73,63.9785,4.2370 yellow,circle,true,9,87,63.5058,8.3350
mlr --csv cat square.csv
color,shape,flag,k,index,quantity,rate red,square,true,2,15,79.2778,0.0130 red,square,false,4,48,77.5542,7.4670 red,square,false,6,64,77.1991,9.5310 purple,square,false,10,91,72.3735,8.2430
mlr --csv cat triangle.csv
color,shape,flag,k,index,quantity,rate yellow,triangle,true,1,11,43.6498,9.8870 purple,triangle,false,5,51,81.2290,8.5910 purple,triangle,false,7,65,80.1405,5.8240
See also Redirected-output statements for examples.
Redirected-output statements¶
The print, dump tee, emit, emitp, and emitf keywords all allow you to redirect output to one or more files or pipe-to commands. The filenames/commands are strings which can be constructed using record-dependent values, so you can do things like splitting a table into multiple files, one for each account ID, and so on.
Details:
- The
print
anddump
keywords produce output immediately to standard output, or to specified file(s) or pipe-to command if present.
mlr help keyword print
print: prints expression immediately to stdout. Example: mlr --from f.dat put -q 'print "The sum of x and y is ".($x+$y)' Example: mlr --from f.dat put -q 'for (k, v in $*) { print k . " => " . v }' Example: mlr --from f.dat put '(NR % 1000 == 0) { print > stderr, "Checkpoint ".NR}'
mlr help keyword dump
dump: prints all currently defined out-of-stream variables immediately to stdout as JSON. With >, >>, or |, the data do not go directly to stdout but are instead redirected. The > and >> are for write and append, as in the shell, but (as with awk) the file-overwrite for > is on first write, not per record. The | is for piping to a process which will process the data. There will be one open file for each distinct file name (for > and >>) or one subordinate process for each distinct value of the piped-to command (for |). Output-formatting flags are taken from the main command line. Example: mlr --from f.dat put -q '@v[NR]=$*; end { dump }' Example: mlr --from f.dat put -q '@v[NR]=$*; end { dump > "mytap.dat"}' Example: mlr --from f.dat put -q '@v[NR]=$*; end { dump >> "mytap.dat"}' Example: mlr --from f.dat put -q '@v[NR]=$*; end { dump | "jq .[]"}'
mlr put
sends the current record (possibly modified by theput
expression) to the output record stream. Records are then input to the following verb in athen
-chain (if any), else printed to standard output (unlessput -q
). The tee keyword additionally writes the output record to specified file(s) or pipe-to command, or immediately tostdout
/stderr
.
mlr help keyword tee
tee: prints the current record to specified file. This is an immediate print to the specified file (except for pprint format which of course waits until the end of the input stream to format all output). The > and >> are for write and append, as in the shell, but (as with awk) the file-overwrite for > is on first write, not per record. The | is for piping to a process which will process the data. There will be one open file for each distinct file name (for > and >>) or one subordinate process for each distinct value of the piped-to command (for |). Output-formatting flags are taken from the main command line. You can use any of the output-format command-line flags, e.g. --ocsv, --ofs, etc., to control the format of the output. See also mlr -h. emit with redirect and tee with redirect are identical, except tee can only output $*. Example: mlr --from f.dat put 'tee > "/tmp/data-".$a, $*' Example: mlr --from f.dat put 'tee >> "/tmp/data-".$a.$b, $*' Example: mlr --from f.dat put 'tee > stderr, $*' Example: mlr --from f.dat put -q 'tee | "tr \[a-z\\] \[A-Z\\]", $*' Example: mlr --from f.dat put -q 'tee | "tr \[a-z\\] \[A-Z\\] > /tmp/data-".$a, $*' Example: mlr --from f.dat put -q 'tee | "gzip > /tmp/data-".$a.".gz", $*' Example: mlr --from f.dat put -q --ojson 'tee | "gzip > /tmp/data-".$a.".gz", $*'
mlr put
'semitf
,emitp
, andemit
send out-of-stream variables to the output record stream. These are then input to the following verb in athen
-chain (if any), else printed to standard output. When redirected with>
,>>
, or|
, they instead write the out-of-stream variable(s) to specified file(s) or pipe-to command, or immediately tostdout
/stderr
.
mlr help keyword emitf
emitf: inserts non-indexed out-of-stream variable(s) side-by-side into the output record stream. With >, >>, or |, the data do not become part of the output record stream but are instead redirected. The > and >> are for write and append, as in the shell, but (as with awk) the file-overwrite for > is on first write, not per record. The | is for piping to a process which will process the data. There will be one open file for each distinct file name (for > and >>) or one subordinate process for each distinct value of the piped-to command (for |). Output-formatting flags are taken from the main command line. You can use any of the output-format command-line flags, e.g. --ocsv, --ofs, etc., to control the format of the output if the output is redirected. See also mlr -h. Example: mlr --from f.dat put '@a=$i;@b+=$x;@c+=$y; emitf @a' Example: mlr --from f.dat put --oxtab '@a=$i;@b+=$x;@c+=$y; emitf > "tap-".$i.".dat", @a' Example: mlr --from f.dat put '@a=$i;@b+=$x;@c+=$y; emitf @a, @b, @c' Example: mlr --from f.dat put '@a=$i;@b+=$x;@c+=$y; emitf > "mytap.dat", @a, @b, @c' Example: mlr --from f.dat put '@a=$i;@b+=$x;@c+=$y; emitf >> "mytap.dat", @a, @b, @c' Example: mlr --from f.dat put '@a=$i;@b+=$x;@c+=$y; emitf > stderr, @a, @b, @c' Example: mlr --from f.dat put '@a=$i;@b+=$x;@c+=$y; emitf | "grep somepattern", @a, @b, @c' Example: mlr --from f.dat put '@a=$i;@b+=$x;@c+=$y; emitf | "grep somepattern > mytap.dat", @a, @b, @c' Please see https://miller.readthedocs.io://johnkerl.org/miller/doc for more information.
mlr help keyword emitp
emitp: inserts an out-of-stream variable into the output record stream. Hashmap indices present in the data but not slotted by emitp arguments are output concatenated with ":". With >, >>, or |, the data do not become part of the output record stream but are instead redirected. The > and >> are for write and append, as in the shell, but (as with awk) the file-overwrite for > is on first write, not per record. The | is for piping to a process which will process the data. There will be one open file for each distinct file name (for > and >>) or one subordinate process for each distinct value of the piped-to command (for |). Output-formatting flags are taken from the main command line. You can use any of the output-format command-line flags, e.g. --ocsv, --ofs, etc., to control the format of the output if the output is redirected. See also mlr -h. Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emitp @sums' Example: mlr --from f.dat put --opprint '@sums[$a][$b]+=$x; emitp > "tap-".$a.$b.".dat", @sums' Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emitp @sums, "index1", "index2"' Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emitp @*, "index1", "index2"' Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emitp > "mytap.dat", @*, "index1", "index2"' Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emitp >> "mytap.dat", @*, "index1", "index2"' Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emitp | "gzip > mytap.dat.gz", @*, "index1", "index2"' Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emitp > stderr, @*, "index1", "index2"' Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emitp | "grep somepattern", @*, "index1", "index2"' Please see https://miller.readthedocs.io://johnkerl.org/miller/doc for more information.
mlr help keyword emit
emit: inserts an out-of-stream variable into the output record stream. Hashmap indices present in the data but not slotted by emit arguments are not output. With >, >>, or |, the data do not become part of the output record stream but are instead redirected. The > and >> are for write and append, as in the shell, but (as with awk) the file-overwrite for > is on first write, not per record. The | is for piping to a process which will process the data. There will be one open file for each distinct file name (for > and >>) or one subordinate process for each distinct value of the piped-to command (for |). Output-formatting flags are taken from the main command line. You can use any of the output-format command-line flags, e.g. --ocsv, --ofs, etc., to control the format of the output if the output is redirected. See also mlr -h. Example: mlr --from f.dat put 'emit > "/tmp/data-".$a, $*' Example: mlr --from f.dat put 'emit > "/tmp/data-".$a, mapexcept($*, "a")' Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emit @sums' Example: mlr --from f.dat put --ojson '@sums[$a][$b]+=$x; emit > "tap-".$a.$b.".dat", @sums' Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emit @sums, "index1", "index2"' Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emit @*, "index1", "index2"' Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emit > "mytap.dat", @*, "index1", "index2"' Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emit >> "mytap.dat", @*, "index1", "index2"' Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emit | "gzip > mytap.dat.gz", @*, "index1", "index2"' Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emit > stderr, @*, "index1", "index2"' Example: mlr --from f.dat put '@sums[$a][$b]+=$x; emit | "grep somepattern", @*, "index1", "index2"' Please see https://miller.readthedocs.io://johnkerl.org/miller/doc for more information.
Emit1 and emit/emitp/emitf¶
There are four variants: emit1
, emitf
, emit
, and emitp
. These are used
to insert new records into the record stream -- or, optionally, redirect them
to files.
Keep in mind that out-of-stream variables are a nested, multi-level
map (directly viewable as JSON using dump
), while
Miller record values are as well during processing -- but records may be
flattened down for output to tabular formats. See the page Flatten/unflatten:
JSON vs. tabular formats for more information.
- You can use
emit1
to emit any map-valued expression, including$*
, map-valued out-of-stream variables, the entire out-of-stream-variable collection@*
, map-valued local variables, map literals, or map-valued function return values. - For
emit
,emitp
, andemitf
, you can emit map-valued local variables, map-valued field attributes (with$
), map-va out-of-stream variables (with@
),$*
,@*
, or map literals (with outermost{...}
) -- but not arbitrary expressions which evaluate to map (such as function return values).
The reason for this is part historical and part technical. As we'll see below,
you can do lots of syntactical things with emit
, emitp
, and emitf
,
including printing them side-by-side, index them, redirect the output to files,
etc. What this means syntatically is that Miller's parser needs to handle all
sorts of commas, parentheses, and so on:
emitf @count, @sum emit @sum, "a", "b" emitp (@count, @sum),"a","b"} # etc
When we try to allow emitf
/emit
/emitp
to handle arbitrary map-valued
expressions, like mapexcept($*, mymap)
and so on, this inserts more syntactic
complexity in terms of commas, parentheses, and so on. The technical term is
LR-1 shift-reduce conflicts, but we can simply think of this in terms of the
parser not being able to efficiently disambiguate all the punctuational
opportunities.
So, emit1
can handle syntactic richness in the one thing being emitted;
emitf
, emit
, and emitp
can handle syntactic richness in the side-by-side
placement, indexing, and redirection.
(Mnemonic: If all you want is to insert a new record into the record stream, emit1
is probably the one you want.)
What this means is that if you want to emit an expression which evaluates to a map, you can do quite simply
mlr --c2p --from example.csv put -q ' emit1 mapsum({"id": NR}, $*) '
id color shape flag k index quantity rate 1 yellow triangle true 1 11 43.6498 9.8870 2 red square true 2 15 79.2778 0.0130 3 red circle true 3 16 13.8103 2.9010 4 red square false 4 48 77.5542 7.4670 5 purple triangle false 5 51 81.2290 8.5910 6 red square false 6 64 77.1991 9.5310 7 purple triangle false 7 65 80.1405 5.8240 8 yellow circle true 8 73 63.9785 4.2370 9 yellow circle true 9 87 63.5058 8.3350 10 purple square false 10 91 72.3735 8.2430
And if you want indexing, redirects, etc., just assign to a temporary variable and use one of the other emit variants:
mlr --c2p --from example.csv put -q ' o = mapsum({"id": NR}, $*); emit o; '
id color shape flag k index quantity rate 1 yellow triangle true 1 11 43.6498 9.8870 2 red square true 2 15 79.2778 0.0130 3 red circle true 3 16 13.8103 2.9010 4 red square false 4 48 77.5542 7.4670 5 purple triangle false 5 51 81.2290 8.5910 6 red square false 6 64 77.1991 9.5310 7 purple triangle false 7 65 80.1405 5.8240 8 yellow circle true 8 73 63.9785 4.2370 9 yellow circle true 9 87 63.5058 8.3350 10 purple square false 10 91 72.3735 8.2430
Emitf statements¶
Use emitf to output several out-of-stream variables side-by-side in the same output record. For emitf
these mustn't have indexing using @name[...]
. Example:
mlr put -q ' @count += 1; @x_sum += $x; @y_sum += $y; end { emitf @count, @x_sum, @y_sum} ' data/small
count=5,x_sum=2.26476,y_sum=2.585083
Emit statements¶
Use emit to output an out-of-stream variable. If it's non-indexed you'll get a simple key-value pair:
cat data/small
a=pan,b=pan,i=1,x=0.346791,y=0.726802 a=eks,b=pan,i=2,x=0.758679,y=0.522151 a=wye,b=wye,i=3,x=0.204603,y=0.338318 a=eks,b=wye,i=4,x=0.381399,y=0.134188 a=wye,b=pan,i=5,x=0.573288,y=0.863624
mlr put -q '@sum += $x; end { dump }' data/small
{ "sum": 2.26476 }
mlr put -q '@sum += $x; end { emit @sum }' data/small
sum=2.26476
If it's indexed then use as many names after emit
as there are indices:
mlr put -q '@sum[$a] += $x; end { dump }' data/small
{ "sum": { "pan": 0.346791, "eks": 1.140078, "wye": 0.777891 } }
mlr put -q '@sum[$a] += $x; end { emit @sum, "a" }' data/small
a=pan,sum=0.346791 a=eks,sum=1.140078 a=wye,sum=0.777891
mlr put -q '@sum[$a][$b] += $x; end { dump }' data/small
{ "sum": { "pan": { "pan": 0.346791 }, "eks": { "pan": 0.758679, "wye": 0.381399 }, "wye": { "wye": 0.204603, "pan": 0.573288 } } }
mlr put -q '@sum[$a][$b] += $x; end { emit @sum, "a", "b" }' data/small
a=pan,b=pan,sum=0.346791 a=eks,b=pan,sum=0.758679 a=eks,b=wye,sum=0.381399 a=wye,b=wye,sum=0.204603 a=wye,b=pan,sum=0.573288
mlr put -q '@sum[$a][$b][$i] += $x; end { dump }' data/small
{ "sum": { "pan": { "pan": { "1": 0.346791 } }, "eks": { "pan": { "2": 0.758679 }, "wye": { "4": 0.381399 } }, "wye": { "wye": { "3": 0.204603 }, "pan": { "5": 0.573288 } } } }
mlr put -q ' @sum[$a][$b][$i] += $x; end { emit @sum, "a", "b", "i" } ' data/small
a=pan,b=pan,i=1,sum=0.346791 a=eks,b=pan,i=2,sum=0.758679 a=eks,b=wye,i=4,sum=0.381399 a=wye,b=wye,i=3,sum=0.204603 a=wye,b=pan,i=5,sum=0.573288
Now for emitp: if you have as many names following emit
as there are levels in the out-of-stream variable's map, then emit
and emitp
do the same thing. Where they differ is when you don't specify as many names as there are map levels. In this case, Miller needs to flatten multiple map indices down to output-record keys: emitp
includes full prefixing (hence the p
in emitp
) while emit
takes the deepest map key as the output-record key:
mlr put -q '@sum[$a][$b] += $x; end { dump }' data/small
{ "sum": { "pan": { "pan": 0.346791 }, "eks": { "pan": 0.758679, "wye": 0.381399 }, "wye": { "wye": 0.204603, "pan": 0.573288 } } }
mlr put -q '@sum[$a][$b] += $x; end { emit @sum, "a" }' data/small
a=pan,pan=0.346791 a=eks,pan=0.758679,wye=0.381399 a=wye,wye=0.204603,pan=0.573288
mlr put -q '@sum[$a][$b] += $x; end { emit @sum }' data/small
pan=0.346791 pan=0.758679,wye=0.381399 wye=0.204603,pan=0.573288
mlr put -q '@sum[$a][$b] += $x; end { emitp @sum, "a" }' data/small
a=pan,sum.pan=0.346791 a=eks,sum.pan=0.758679,sum.wye=0.381399 a=wye,sum.wye=0.204603,sum.pan=0.573288
mlr put -q '@sum[$a][$b] += $x; end { emitp @sum }' data/small
sum.pan.pan=0.346791,sum.eks.pan=0.758679,sum.eks.wye=0.381399,sum.wye.wye=0.204603,sum.wye.pan=0.573288
mlr --oxtab put -q '@sum[$a][$b] += $x; end { emitp @sum }' data/small
sum.pan.pan 0.346791 sum.eks.pan 0.758679 sum.eks.wye 0.381399 sum.wye.wye 0.204603 sum.wye.pan 0.573288
Use --flatsep to specify the character which joins multilevel
keys for emitp
(it defaults to a colon):
mlr --flatsep / put -q '@sum[$a][$b] += $x; end { emitp @sum, "a" }' data/small
a=pan,sum/pan=0.346791 a=eks,sum/pan=0.758679,sum/wye=0.381399 a=wye,sum/wye=0.204603,sum/pan=0.573288
mlr --flatsep / put -q '@sum[$a][$b] += $x; end { emitp @sum }' data/small
sum/pan/pan=0.346791,sum/eks/pan=0.758679,sum/eks/wye=0.381399,sum/wye/wye=0.204603,sum/wye/pan=0.573288
mlr --flatsep / --oxtab put -q ' @sum[$a][$b] += $x; end { emitp @sum } ' data/small
sum/pan/pan 0.346791 sum/eks/pan 0.758679 sum/eks/wye 0.381399 sum/wye/wye 0.204603 sum/wye/pan 0.573288
Multi-emit statements¶
You can emit multiple map-valued expressions side-by-side by including their names in parentheses:
mlr --from data/medium --opprint put -q ' @x_count[$a][$b] += 1; @x_sum[$a][$b] += $x; end { for ((a, b), _ in @x_count) { @x_mean[a][b] = @x_sum[a][b] / @x_count[a][b] } emit (@x_sum, @x_count, @x_mean), "a", "b" } '
a b x_sum x_count x_mean pan pan<PHONE_NUMBER>316854 427 0.5133141190437597 pan wye<PHONE_NUMBER>0748447 395 0.5023618498923658 pan eks<PHONE_NUMBER>3165525 429 0.5036718595143479 pan hat<PHONE_NUMBER>1488686 417 0.492140950155604 pan zee<PHONE_NUMBER>2331917 413 0.4966041598627583 eks pan<PHONE_NUMBER>7250723 371 0.48507555383425127 eks wye<PHONE_NUMBER>713734 407 0.4838950517724162 eks zee<PHONE_NUMBER>584733 357 0.49546320772681596 eks eks<PHONE_NUMBER>2937984 413 0.5227992666570941 eks hat<PHONE_NUMBER>20597 417 0.5006790659966355 wye wye<PHONE_NUMBER>0261419 377 0.49150092785839306 wye pan<PHONE_NUMBER>2056564 392 0.4996119901034838 wye hat<PHONE_NUMBER>346132 426 0.4977304763723314 wye zee<PHONE_NUMBER>6708714 385 0.5059066170573692 wye eks<PHONE_NUMBER>356315 386 0.5306035254809106 zee pan<PHONE_NUMBER>8504267 389 0.5198298297816007 zee wye<PHONE_NUMBER>194868 455 0.5142667998230479 zee eks<PHONE_NUMBER>631925 391 0.4883932942792647 zee zee<PHONE_NUMBER>0417319 403 0.5127559183726382 zee hat<PHONE_NUMBER>0900935 409 0.46772617655014515 hat wye<PHONE_NUMBER>609959 423 0.49381326184632596 hat zee<PHONE_NUMBER>965293 385 0.5099985721987774 hat eks<PHONE_NUMBER>716193 389 0.48587864619953547 hat hat<PHONE_NUMBER>148762 381 0.47993053101017374 hat pan<PHONE_NUMBER>327806 363 0.4643355557376876
What this does is walk through the first out-of-stream variable (@x_sum
in this example) as usual, then for each keylist found (e.g. pan,wye
), include the values for the remaining out-of-stream variables (here, @x_count
and @x_mean
). You should use this when all out-of-stream variables in the emit statement have the same shape and the same keylists.
Emit-all statements¶
Use emit all (or emit @*
which is synonymous) to output all out-of-stream variables.


Portage Trail Outfitters means
beauty. adventure. nature. memories.
Home Welcome to Portage Trail Outfitters, nestled on the pristine banks of Ensign Lake, part of northern Minnesota’s world
famous Boundary Waters Canoe Area Wilderness (BWCAW). At Portage Trail Outfitters, we pride ourselves
on catering to your idea of an outdoor wilderness experience. Whether your sense of the great outdoors
is a luxurious private cabin, or a bunkhouse to crash in before a peaceful and secluded trip into
the wild, we can help you out. In addition to various lodging options, Portage Trail Outfitters offers
full service outfitting and guide services for your wilderness trip. Do you have the majority of
your own gear, but forgot something? No problem, you can rent equipment à la cart. At Portage Trail
Outfitters, keep your eyes open for a rare moose sighting, ears open for the soothing evening song
of the Minnesota loon, and your heart open for one of the most memorable experiences of your life.
Enjoy your stay!
Share this page:
Portage Trail Outfitters means
beauty. adventure. nature. memories.


XLS Style Guide
The Google style guides recommend enforcing local consistency where stylistic choices are not predefined. This file notes some of the choices we make locally in the XLS project, with the relevant Google style guides (C++, Python) as their bases.
C++
- Align the pointer or reference modifier token with the type; e.g.
Foo& foo = ...
instead ofFoo &foo = ...
, andFoo* foo = ...
instead ofFoo *foo= ...
.
- Use
/*parameter_name=*/value
style comments if you choose to annotate arguments in a function invocation.clang-tidy
recognizes this form, and provides a Tricorder notification ifparameter_name
is mismatched against the parameter name of the callee.
- Prefer
int64_t
overint
to avoid any possibility of overflow.
- Always use
Status
orStatusOr
for any error that a user could encounter.
- Other than user-facing errors, use
Status
only in exceptional situations. For example,Status
is good to signal that a required file does not exist but not for signaling that constant folding did not constant fold an expression.See how heavyweight is StatusOr for more details on thinking about the costs involved.
- Internal errors for conditions that should never be false can use
CHECK
, but may also useStatus
orStatusOr
.
- Prefer to brace single-statement blocks. Because the
XLS_ASSIGN_OR_RETURN
macro expands into multiple statements, this can cause problems when using unbraced single-statement blocks. Instead of XLS developers needing to think about individual cases of single statement blocks, we brace all single statement blocks.
- Prefer using
XLS_ASSIGN_OR_RETURN
/XLS_RETURN_IF_ERROR
when appropriate, but when binding aStatusOr
wrapped value prefer to name itthing_or
so that it can be referenced without the wrapper asthing
; e.g.absl::StatusOr<Thing> thing_or = f(); if (!thing_or.ok()) { // ... handling of the status via thing_or.status() and returning ... } const Thing& thing = thing_or.value();
- Prefer
CHECK
toDCHECK
, except thatDCHECK
can be used to verify conditions that it would be too expensive to verify in production, but that are fast enough to include outside of production.
- Use
QCHECK
andLOG(QFATAL)
during program startup when verifying startup parameters (i.e., flags); preferCHECK
andLOG(FATAL)
in all other circumstances, as theQ
variants suppressatexit
handling (including--cpu_profile
).
- Follow the C++ style guide for capitalization guidelines; however, in the
somewhat ambiguous case of I/O (short for Input/Output, which we use often),
the slash counts as internal spacing and therefore the capitalization we use
is
IO
, as inWrapIO
orStreamingIOReader
.
- Prefer to use the
XLS_FRIEND_TEST
macro vs friending manually-mangled test names.At times it can be useful to test unit test a private/protected member of a class, and the
XLS_FRIEND_TEST
macro makes this possible. Note that the test case must live outside an unnamed namespace in the test file for the "friending" to work properly.
- For simple const accessors, for the sake of consistency in the code base,
and a weak preference towards the benefits of information hiding, prefer to
return view types over the apparent type of the member; e.g.
class MyClass { public: // This return type is preferrable to `const std::vector<uint64_t>&`. absl::Span<const uint64_t> values() const { return values_; } private: std::vector<uint64_t> values_; };
- Follow the
style guide's
decision to avoid RTTI. In practice, this means
down_cast<>
should be used instead ofdynamic_cast<>
. However, the style guide says to avoid hand-implementing RTTI-like workarounds. The DSLX and XLScc frontends are places where avoiding RTTI would require implementing workarounds that end up looking a lot like RTTI, sodynamic_cast<>
is common and accepted for those parts of the codebase. Elsewhere, especially with IRNode
types,down_cast<>
should be used instead.
Functions
- Short or easily-explained argument lists (as defined by the developer) can
be explained inline with the rest of the function comment. For more complex
argument lists, the following pattern should be used:
// <Function description> // Args: // arg1: <arg1 description> // arg2: <arg2 description> // ...
IR nodes
- Unlike most data, IR elements should be passed as non-const pointers, even when expected to be const (which would usually indicate passing them as const references). Experience has shown that IR elements often develop non-const usages over time. Consider the case of IR analysis passes - those passes themselves rarely need to mutate their input data, but they build up data structures whose users often need to mutate their contents. In addition, treating elements as pointers makes equality comparisons more straightforward (avoid taking an address of a reference) and helps avoid accidental copies (assigning a reference to local, etc.). Non-const pointer usage propagates outwards such that the few cases where a const reference could actually be appropriate become odd outliers, so our guidance is that IR elements should uniformly be passed as non-const pointers.
Protocol buffers
- Prefer to use proto3 specifications in all new protocol buffer files.
FAQ
How heavyweight is StatusOr
?
What follows is the general guidance on how absl::StatusOr is used -- it is used extensively throughout the XLS code base as an error-style indicator object wrapper, so it is important to understand the mental model used for its cost.
Consider cost wise that: a) creating an ok StatusOr
is cheap, b) creating
a non-ok StatusOr
is expensive (that is, imagine the non-ok Status
within a StatusOr
is the expensive part).
The implication being: if there's an API where "not found" is a reasonable
outcome, prefer std::optional<>
as a return value to indicate that / go with
the grain of cost.
Something like a filesystem API would be a classic example -- where you
shouldn't be rooting around looking for files that aren't there -- so a
not-found absl::StatusOr
result would be fine to use.
A good potential mental model is to imagine the program may run with logging of
a traceback for every non-ok status that is created. (This is related to a
debugging capability in Google internally called
--util_status_save_stack_trace
that captures backtraces when error Status
es
are created.) Ideally, with such a logging flag turned on, the screen wouldn't
fill up with "non error tracebacks", only tracebacks from events where something
really went wrong.


Share files with your friends, family, and co-workers with just a click. QuickDrop is a file sharing platform with absolutely no restrictions!
From simple JPG's to ML models, share anything you want.
You don't have to worry about upload size limits.
Your files are safe with us.
Feel free to use on any device.
Describe your posts with your own words.
Download the files you like with just a click.


Remove consecutive repeating characters in a string
Question : Let’s suppose that you are given an input string that might contain characters that are repeated. Can you design an algorithm that scans the input and removes any consecutively repeated characters and returns the trimmed string. It’s easier to describe this with an example :-
inpString = "aabbcc"
outString = "abc"
inpString = "aabbccabc"
outString = "abcabc"
Solution: The solution is pretty easy. All you have to do is (1) scan the string character by character, (2) check if a character is the same as the next character, (3) decide what to do if it equal or not to the next character. You can do this in O(n) without allocating any new space.
inpstr = "aabbccfffff"
strlist = list(inpstr)
length = len(strlist)
writeCtr = 0
for index in range(length-1):
if index == 0 :
strlist[writeCtr] = strlist[index]
writeCtr = writeCtr + 1
elif strlist[index] == strlist[index+1]:
continue
else:
strlist[writeCtr] = strlist[index + 1]
writeCtr = writeCtr + 1
outStr = strlist[0:writeCtr]
# printing the input and output
print("Input string : " + inpstr)
print("Output string : " + "".join(outStr))
Do let me know if you have a simpler solution!


Transitivity of Leibniz equality
Prove manually the following theorem (already in
Coq
's base of theorems) :
forall (A:Type) (a b c:A), a = b -> b = c -> a = c.
Applying explicitely
eq_ind
,
Using
Rewrite
Solution
Look at this file


Preparation time
less than 30 mins
Cooking time
less than 10 mins
Serves
Serves 1
Coat the plaice fillets in the flour and season with a little salt and freshly ground black pepper.
Gently melt the butter in a frying pan and fry the fillets for 2-3 minutes on each side.
For the vinaigrette, heat the vinegar, sugar, blackberries and oil in a small pan and heat gently for 5-6 minutes.
Spoon the cooked mangetout onto a serving plate. Place the plaice fillets on top and drizzle the vinaigrette around.
Serve.


I hereby agree to all policies laid out by Instagram on their "Platform Policy" document, which can be found at https://www.instagram.com/about/legal/terms/api/.
I am doing this so that I can continue to serve my own Instagram posts to my design portfolio website.
July 6, 2016


Functional Step 1 Find friends nearby from VK Allow to find distance to them Step 2 See them on the map Create a route to them Track their location Step 3 Send message to organise meeting {# start slider #} {# end of slider #}


return self.grad(inputs, eval_points)
def perform(self, node, inputs, outputs):
outputs[0][0] = self.func(inputs[0])
def grad(self, inputs, gradients):
// NOTE: There may be a bug in Theano for custom Ops
def perform(self, node, inputs, outputs):
(b, sigr) = inputs
rT, ddb, ddsigr = self.func(b, sigr)
outputs[0][0] = rT
outputs[1][0] = ddb
outputs[2][0] = ddsigr


I wanted to create a cool rocket launch animation. Click on the rocket to see it go up.
View PrototypeMy attempt at understanding momentum, inertia and collision. This is an extension of Fran Perez's exploration.
View PrototypeAnother very simple prototype today. This was the first time I used sliderComponent, it was quite fun.
View PrototypeA relative simple prototype showcasing the powers CSS blending modes and the infinite repeat animation option.
View PrototypeThis is a rebound of Fran Perez's awesome demo of Google's value propositions prototype. The nested structure of creating classes for objects and components was an eye-openner for me. I took the main logic in his prototype and adapted to a newly designed onboarding flow of the WeWork app.
View PrototypeI took Henrique Gusso's very cool prototype and made a few modifications. I wanted to create a filter to make a photo look like an Impressionist painting. The effect is constraint by the browser's ability to handle effect changes on the number of elements. It was a fun project, and lots of learnings from Henrique's source code. Safari only. Running on Chrome will likely cause it to crash.
View PrototypeHaving seen Elliot Noltens's great demo of an accordion list view, I decided to give it a try myself. I learned from his prototype a great way to add a system of vetted UI gradients to the prototype via JSON. For some reason scroll.updateContent() doesn't work with state changes, so I added an invisible layer to extend the scroll.
View PrototypeAgain continuing on the theme of gooey morph, I experiemented with creating a gooey material action button. Safari only.
View PrototypeI stumpled upon this great blog article by Rohn, and decided to give the gooey morph effect a shot. Instead of injecting the blur and contrast as strings in the style properties as Rohn suggested, Framer already accepts constrast and blur as direct inputs. I tried it, and it worked. Swipe left to view effect. This only works in Safari.
View PrototypeAnother simple demo today. Drag and release the dot to view the trail effect.
View Prototype


--- layout: post title: draw subtitle: markmap draw.io plantuml tags: [markmap, draw.io, plantuml] comments: true readtime: true # show-avatar: false # social-share: false # full-width: true ---


Logo on white background
Logo on Solarized light background
Logo on Solarized dark background
Logo on black background


Discover the benefits of data analytics and make better decision regarding revenue, customer experience, and overall efficiency.
Discover the benefits of data analytics and make better decision regarding revenue, customer experience, and overall efficiency.


Linux: is a family of open-source Unix-like operating systems based on the Linux kernel.
In this tutorial we will demonstrate how to use Docker with some linux commands through the command line.
Getting Started: First we must pull the linux image inside the command line.
1. Command: docker pull ubuntu - This will pull the ubuntu image.
2. Use the "Docker Images" to check the existing Docker Images on your computer.
3. Command: docker run -it ubuntu:latest /bin/bash - this will run Ubuntu to start a docker container, and logs in the Ubuntu container.
4. Command: apt-get update - this command will allow you to install applications in the linux container.
5. Command: apt-get install apache2 - this command will allow you to install an apache server within the container.
6. Command: exit - this command closes the container.
See In Action


WITNESS LIST Urban Affairs Committee June 12, 2002-10:00A Interim Charge 2 On: Allen, Monique (Self and NTCDA) Carrington, Edwina (Texas Department of Housing and Community Affairs) Eaton, Michael (Self and Maple Avenue Economic Development Corporation, Atlantic Housing Corporation, Dallas City Homes, etc.) Fairfield, Stephan (Self and Texas Association of Community Development Corporations, Covenant Community Capital and SMHA) Hammerlein, George (Paul Bettencourt, Harris County Tax Assessor - Collector) Hull, Matt (Texas Association of Community Development Corporations) Lee, William (Safeplace, Grove Place Partner, TEKOA Housing Advisors) Moreau, Walter (Foundation Communities) Ocanas, Reymundo (Texas Association of Community Development Corporations) Radle, Rod (San Antonio Alternative Housing Corporation) Roberts, Sherman (Texas Association of Community Development Corporations and Operation Relief CDC) Rollins, Gene (City of Ft. Worth) Turkel, David (Self) Williams, Sandra (Alamo Area Mutual Housing Association and Texas Association of Community Development Corporations) Winkler, Sarah (Alief ISD and Texas Association of School Boards)


Realm Roller- your one-stop-shop for D&D RPGs
View the repository
Coding Quiz- a timed quiz to test your coding vernacular
View the repository
Weather Dashboard- easily check the weather in any city
View the repository
Virtual pet game requiring an account.
View the repository


Steps to Get Remote netsh Access
1. If it’s not already set, configure target’s Filter Policy to allow your access (might already be set for psexec by admins):
PS C:\> reg add \\<TargetIP>\HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1
2. Start Remote Registry service and Remote Access Service:
PS C:\> sc \\<targetIP> start remoteregistry
PS C:\> sc \\<targetIP> start remoteaccess
3. Use netsh to remote in:
PS C:\> netsh –r <TargetIP> or…
PS C:\> netsh
netsh> set machine <TargetIP>
[TargetIP] netsh> interface ipv6 show addresses


{% extends 'blog/base.html' %} {% block heading %}About thecovfefe blog{% endblock %} {% block sub %}A forLoop Ibadan Demo{% endblock %} {% block bg %}https://pbs.twimg.com/media/DAoZ7Z6XcAAwRP4.jpg{% endblock %} {% block main %}
forLoop envisions to be a dev event where software developers can come together, interact, and share knowledge on different technologies.
This event seeks to brings aspiring developers, experienced developers, technology enthusiast and other like minded and technically oriented individuals together to engage each other, learn from each other and grow together as a community. Speakers would be demystifying common concepts and development patterns for building software. Everything from learning how to impact the larger software community by contributing to open source projects to building application programming interfaces ( API's) the right way. Come! We'll be expecting you.


KETTE - Playground
Register bicycle
Your Account
Frame number:
For:
Register bicycle
Result:
Hint:
open the browser developer console to view any errors and warnings.
Accounts on the chain you can create an register bicycles for:


Returns information about a field in a PivotTable report.
Syntax
GET.PIVOT.FIELD(type_num, pivot_field_name, pivot_table_name)
Type_num is a value from 1 to 17 that returns the following types of information:
| Type_num | Value |
| 1 | Returns an array of all the items which make up pivot_field_name. The array is made up of text constants, dates or numbers depending on the field. |
| 2 | Returns an array of all items which are set to show with the pivot_field_name. The array is made up of text constants, dates or numbers depending on the field. The array is returned in the order that the items are displayed in the PivotTable report. If pivot_field_name is a page field, then the array contains only one element, the value corresponding to the active page (this could be all if the All item is showing). |
| 3 | Returns an array of all items which are hidden in the pivot_field_name. The array is made up of text constants, dates or numbers depending on the field. If pivot_field_name is a data field or the data header name, this function returns the #N/A! error value. |
| 4 | Returns an integer describing where the field is displayed in the active PivotTable report (either row or column): 0 = Hidden 1 = Row 2 = Col 3 = Page 4 = Data |
| 5 | Returns an array of all items in pivot_field_name that are group parents. The array is made up of text constants, dates or numbers depending on the field. The array is returned in the order which these items appear in the PivotTable report. Returns #N/A if there are no group parents and if the pivot_field_name is a data field or the data field header. |
| 6 | Returns a number between 0 and 4095 which describes the subtotals attached to the field. The number is the sum of the values associated with each subtotal function. See PIVOT.FIELD.PROPERTIES for a list of all the values associated with subtotal calculations. If the field is showing as a data field or data field header, #N/A! is returned. |
| 7 | Returns an integer describing the type of data contained in the field: 0 = Text 1 = Number 2 = Date |
| 8 | Returns an array five columns wide and one row high describing the summary function's custom calculation shown with the specified field (Data field) in the PivotTable report. The array will look as follows: {function, calculation, base field, base item, number format}. If pivot_field_name is not showing in the active PivotTable report as a data field, #N/A! is returned. |
| 9 | Returns a reference to all of pivot_field_name's items currently showing in the active PivotTable report. If pivot_field_name is hidden, #N/A! is returned. If pivot_field_name is a page field, the reference to the currently showing page item is returned. If pivot_field_name is a data field, a reference to all the data for this field in the PivotTable report is returned. The references are returned as text. |
| 10 | Returns a reference to the header cell for pivot_field_name. If pivot_field_name is a data field, a reference to all the headers in the data row or column is returned. If pivot_field_name is hidden, #N/A! is returned. The reference is returned as text. |
| 11 | Returns the number of grouped fields in the grouped field set which includes pivot_field_name. If pivot_field_name is neither a parent field nor a child field, 1 is returned. If pivot_field_name is a data field or data header name, the function returns the #N/A! error value. |
| 12 | Returns the level of pivot_field_name in the grouped field set which includes pivot_field_name. Returns 1 for the highest level parent field, 2 for its child field, and so on. If pivot_field_name is neither a parent field nor a child field, 1 is returned. If pivot_field_name is a data field or data header name, the function returns the #N/A! error value. |
| 13 | Returns the name of the parent field for pivot_field_name as a text constant. If pivot_field_name is not a child field, #N/A! is returned. |
| 14 | Returns the name of the child field for pivot_field_name as a text constant. If pivot_field_name is not a parent field, #N/A! is returned. |
| 15 | Returns a text constant representing the original name of the field in the data source. |
| 16 | Returns the position of the field among all the other fields in its orientation. For instance, a 1 would be returned if the field was the first row field. |
| 17 | Returns an array of all items in pivot_field_name that are group children. The array is made up of text constants, dates or numbers depending on the field. The array is returned in the order which these items appear in the PivotTable report. Returns #N/A if there are no group children, and if the pivot_field_name is a data field or the data field header. |
Pivot_field_name is the name of the field that you want information about. If there is no field named pivot_field_name in the PivotTable report, returns #VALUE!.
Pivot_table_name is the name of a PivotTable report containing the field that you want information about. If omitted, the PivotTable report containing the active cell is used. If the active cell is not in a PivotTable report, the #VALUE! error value is returned.
Related Functions
GET.PIVOT.ITEM Returns information about an item in a PivotTable report.
GET.PIVOT.TABLE Returns information about a PivotTable report.
Return to index


-
Who was ill?
-
{{ reason.affected_person | capitalize }}
-
Illness start date
-
{{ reason.start_on }}
{% if reason.continued_illness === 'yes' %}
-
Continuing illness?
-
{{ reason.continued_illness | capitalize }}
{% else %}
-
Illness end date
-
{{ reason.end_on }}
{% endif %}
{% if reason.reason_information != null %}
-
Further information
-
{{ reason.reason_information | safe | nl2br }}
{% endif %}
{% if reason.attachments === 'yes' %}
-
Supporting documents
-
evidence-letter.jpg
{% endif %}
{% else %}


Please select from the list below where you wish to navigate to. Each page demonstrates a different feature of html, CSS and javaScript.


Protests erupt after KIMS ward boy ends life
by Staff ReporterA ward boy named Yogesh, 28, employed on a contract basis with Kempegowda Institute of Medical Sciences (KIMS), allegedly killed himself at his Chamarajpet residence on Friday. As word spread, several ward boys working with KIMS staged a protest alleging that Yogesh had killed himself over non-payment of salary for several months.
Police sources said that Yogesh had not been paid since January 2019. However, they said he had not left a note and they couldn’t ascertain whether it was salary issues that led him to take the extreme step.
The ward boys withdrew their protest in the evening after the KIMS management promised to address their issues at a meeting on Saturday morning.
However, the management claimed they were not responsible for Yogesh’s death.
(Those in distress or those having suicidal tendencies can call Arogya Sahayavani Ph.: 104 for help.)


LUIGI
Widgets
Modules
Classes
-
Event.names
-
Event names.
Fields:
- Reshape
A widget is being reshaped.
- PreDisplay
A widget is about to be drawn.
- Display
A widget was drawn.
- KeyPress
A keyboard key was pressed.
- KeyRelease
A keyboard key was released.
- TextInput
Text was entered.
- Move
The cursor moved, and no button was pressed.
- Enter
The cursor entered a widget, and no button was pressed.
- Leave
The cursor left a widget, and no button was pressed.
- PressEnter
The cursor entered a widget, and a button was pressed.
- PressLeave
The cursor left a widget, and a button was pressed.
- PressStart
A pointer button or keyboard shortcut was pressed.
- PressEnd
A pointer button or keyboard shortcut was released.
- PressDrag
A pressed cursor moved; targets originating widget.
- PressMove
A pressed cursor moved; targets widget at cursor position.
- Press
A pointer button was pressed and released on the same widget.
- Change
A widget's value changed.
- WheelMove
The scroll wheel on the mouse moved.
generated by LDoc 1.4.3
Last updated 2015-12-17 04:20:17