Flight controller API: set or get parameter, execute flight actions. More...
#include <dji_flight_controller.hpp>
Public Types | |
| typedef Telemetry::HomeLocationData | HomeLocation |
| typedef FlightAssistant::RtkEnableData | RtkEnabled |
| typedef FlightAssistant::AvoidEnable | AvoidEnable |
| typedef FlightAssistant::UpwardsAvoidEnable | UpwardsAvoidEnable |
| typedef FlightAssistant::GoHomeAltitude | GoHomeHeight |
| typedef FlightJoystick::ControlCommand | JoystickCommand |
| typedef enum FlightJoystick::HorizontalLogic | HorizontalLogic |
| typedef enum FlightJoystick::VerticalLogic | VerticalLogic |
| typedef enum FlightJoystick::YawLogic | YawLogic |
| typedef enum FlightJoystick::HorizontalCoordinate | HorizontalCoordinate |
| typedef enum FlightJoystick::StableMode | StableMode |
| typedef enum FlightActions::KillSwitch | KillSwitch |
| typedef struct DJI::OSDK::FlightController::JoystickMode | JoystickMode |
Public Member Functions | |
| FlightController (Vehicle *vehicle) | |
| void | obtainJoystickCtrlAuthorityAsync (void(*userCB)(ErrorCode::ErrorCodeType, UserData userData), UserData userData, int timeout, int retryTime) |
| Obtain the control authority of the api (non-blocking call) More... | |
| ErrorCode::ErrorCodeType | obtainJoystickCtrlAuthoritySync (int timeout) |
| Obtain the control authority of the api (blocking call) More... | |
| void | releaseJoystickCtrlAuthorityAsync (void(*userCB)(ErrorCode::ErrorCodeType, UserData userData), UserData userData, int timeout, int retryTime) |
| Release the control authority of the api (non-blocking call) More... | |
| ErrorCode::ErrorCodeType | releaseJoystickCtrlAuthoritySync (int timeout) |
| Release the control authority of the api (blocking call) More... | |
| ErrorCode::ErrorCodeType | setRtkEnableSync (RtkEnabled rtkEnable, int timeout) |
| Set RTK enable or disable, blocking calls. More... | |
| void | setRtkEnableAsync (RtkEnabled rtkEnable, void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UserData userData), UserData userData) |
| Set RTK enable or disable, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | getRtkEnableSync (RtkEnabled &rtkEnable, int timeout) |
| Get rtk enable or disable, blocking calls. More... | |
| void | getRtkEnableAsync (void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, RtkEnabled rtkEnable, UserData userData), UserData userData) |
| Get RTK enable or disable, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | setGoHomeAltitudeSync (GoHomeHeight altitude, int timeout) |
| Set go home altitude, blocking calls. More... | |
| void | setGoHomeAltitudeAsync (GoHomeHeight altitude, void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UserData userData), UserData userData) |
| Set go home altitude, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | getGoHomeAltitudeSync (GoHomeHeight &altitude, int timeout) |
| Get go home altitude, blocking calls. More... | |
| void | getGoHomeAltitudeAsync (void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, GoHomeHeight altitude, UserData userData), UserData userData) |
| Get go home altitude, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | setCollisionAvoidanceEnabledSync (AvoidEnable avoidEnable, int timeout) |
| Set collision avoidance enable or disable, blocking calls. More... | |
| void | setCollisionAvoidanceEnabledAsync (AvoidEnable avoidEnable, void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UserData userData), UserData userData) |
| Set collision avoidance enable or disable, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | getCollisionAvoidanceEnabledSync (AvoidEnable &avoidEnable, int timeout) |
| Get collision avoidance enable or disable, blocking calls. More... | |
| void | getCollisionAvoidanceEnabledAsync (void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, AvoidEnable avoidEnable, UserData userData), UserData userData) |
| Get collision avoidance enable or disable, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | setUpwardsAvoidanceEnabledSync (UpwardsAvoidEnable upwardsAvoidEnable, int timeout) |
| Set upwards avoidance enable or disable, blocking calls. More... | |
| void | setUpwardsAvoidanceEnabledAsync (UpwardsAvoidEnable upwardsAvoidEnable, void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UserData userData), UserData userData) |
| Set upwards avoidance enable or disable, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | getUpwardsAvoidanceEnabledSync (UpwardsAvoidEnable &upwardsAvoidEnable, int timeout) |
| Get upwards avoidance enable or disable, blocking calls. More... | |
| void | getUpwardsAvoidanceEnabledAsync (void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UpwardsAvoidEnable upwardsEnable, UserData userData), UserData userData) |
| Get upwards avoidance enable or disable, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | setHomeLocationSync (HomeLocation homeLocation, int timeout) |
| Set customized GPS(not RTK) home location, blocking calls. More... | |
| void | setHomeLocationAsync (HomeLocation homeLocation, void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UserData userData), UserData userData) |
| Set customized GPS(not RTK) home location, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | setHomeLocationUsingCurrentAircraftLocationSync (int timeout) |
| Set home location using current aircraft GPS(not RTK) location, blocking calls. More... | |
| void | setHomeLocationUsingCurrentAircraftLocationAsync (void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UserData userData), UserData userData) |
| Set home location using current aircraft GPS(not RTK) location, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | turnOnMotorsSync (int timeout) |
| Wrapper function for turn on motors, blocking calls. More... | |
| void | turnOnMotorsAsync (void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UserData userData), UserData userData) |
| Wrapper function for turn on motors, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | turnOffMotorsSync (int timeout) |
| Wrapper function for turn off motors, blocking calls. More... | |
| void | turnOffMotorsAsync (void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UserData userData), UserData userData) |
| Wrapper function for turn off motors, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | startTakeoffSync (int timeout) |
| Wrapper function for aircraft takeoff, blocking calls. More... | |
| void | startTakeoffAsync (void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UserData userData), UserData userData) |
| Wrapper function for aircraft takeoff, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | startLandingSync (int timeout) |
| Wrapper function for aircraft landing, blocking calls. More... | |
| void | startLandingAsync (void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UserData userData), UserData userData) |
| Wrapper function for aircraft landing, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | cancelLandingSync (int timeout) |
| Wrapper function for cancel aircraft landing, blocking calls. More... | |
| void | cancelLandingAsync (void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UserData userData), UserData userData) |
| Wrapper function for cancel aircraft landing, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | startForceLandingSync (int timeout) |
| Wrapper function for aircraft force landing, blocking calls. More... | |
| void | startForceLandingAsync (void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UserData userData), UserData userData) |
| Wrapper function for aircraft force landing, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | startConfirmLandingSync (int timeout) |
| Wrapper function for aircraft confirm landing and avoid ground, blocking calls. More... | |
| void | startConfirmLandingAsync (void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UserData userData), UserData userData) |
| Wrapper function for aircraft confirm landing and avoid ground, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | startGoHomeSync (int timeout) |
| Wrapper function for go home action, blocking calls. More... | |
| void | startGoHomeAsync (void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UserData userData), UserData userData) |
| Wrapper function for go home action, non-blocking calls. More... | |
| ErrorCode::ErrorCodeType | cancelGoHomeSync (int timeout) |
| Wrapper function for stop go home action, blocking calls. More... | |
| void | cancelGoHomeAsync (void(*UserCallBack)(ErrorCode::ErrorCodeType retCode, UserData userData), UserData userData) |
| Wrapper function for stop go home action, non-blocking calls. More... | |
| void | setJoystickMode (const JoystickMode &joystickMode) |
| Wrapper function for set joystick mode, non-blocking calls. More... | |
| void | setJoystickCommand (const JoystickCommand &JoystickCommand) |
| Wrapper function for set joystick command, non-blocking calls. More... | |
| void | joystickAction () |
| Wrapper function for set joystick action, non-blocking calls. More... | |
| void | getJoystickMode (FlightJoystick::ControlMode &joystickMode) |
| Wrapper function for get joystick mode, non-blocking calls. More... | |
| void | getJoystickCommand (JoystickCommand &joystickCommand) |
| Wrapper function for get joystick command, non-blocking calls.  More... | |
| void | emergencyBrakeAction (void) |
| Stop the vehicle in horiz velocity, vert velocity, yaw rate mode (body frame) More... | |
Detailed Description
Flight controller API: set or get parameter, execute flight actions.
Member Typedef Documentation
◆ GoHomeHeight
| typedef FlightAssistant::GoHomeAltitude DJI::OSDK::FlightController::GoHomeHeight |
unit:meter, range 20~500
◆ RtkEnabled
| typedef FlightAssistant::RtkEnableData DJI::OSDK::FlightController::RtkEnabled |
0: disable, 1: enable
Member Function Documentation
◆ cancelGoHomeAsync()
| void FlightController::cancelGoHomeAsync | ( | void(*)(ErrorCode::ErrorCodeType retCode, UserData userData) | UserCallBack, |
| UserData | userData | ||
| ) |
Wrapper function for stop go home action, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
UserCallBack callback function defined by user - retCode ErrorCode::ErrorCodeType error code
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ cancelGoHomeSync()
| ErrorCode::ErrorCodeType FlightController::cancelGoHomeSync | ( | int | timeout | ) |
Wrapper function for stop go home action, blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
◆ cancelLandingAsync()
| void FlightController::cancelLandingAsync | ( | void(*)(ErrorCode::ErrorCodeType retCode, UserData userData) | UserCallBack, |
| UserData | userData | ||
| ) |
Wrapper function for cancel aircraft landing, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
UserCallBack callback function defined by user - retCode ErrorCode::ErrorCodeType error code
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ cancelLandingSync()
| ErrorCode::ErrorCodeType FlightController::cancelLandingSync | ( | int | timeout | ) |
Wrapper function for cancel aircraft landing, blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
◆ emergencyBrakeAction()
| void FlightController::emergencyBrakeAction | ( | void | ) |
Stop the vehicle in horiz velocity, vert velocity, yaw rate mode (body frame)
- Supported Platforms : M210V2, M300
◆ getCollisionAvoidanceEnabledAsync()
| void FlightController::getCollisionAvoidanceEnabledAsync | ( | void(*)(ErrorCode::ErrorCodeType retCode, AvoidEnable avoidEnable, UserData userData) | UserCallBack, |
| UserData | userData | ||
| ) |
Get collision avoidance enable or disable, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
UserCallBack callback function defined by user - retCode the OSDK ErrorCode::ErrorCodeType error code
- avoidEnable AvoidEnable, AVOID_DISABLE: disable, AVOID_ENABLE: enable
- userData the interface to pass userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ getCollisionAvoidanceEnabledSync()
| ErrorCode::ErrorCodeType FlightController::getCollisionAvoidanceEnabledSync | ( | AvoidEnable & | avoidEnable, |
| int | timeout | ||
| ) |
Get collision avoidance enable or disable, blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
avoidEnable AvoidEnable, AVOID_DISABLE: disable, AVOID_ENABLE: enable timeout blocking timeout in seconds
- Returns
- OSDK ErrorCode::ErrorCodeType error code
◆ getGoHomeAltitudeAsync()
| void FlightController::getGoHomeAltitudeAsync | ( | void(*)(ErrorCode::ErrorCodeType retCode, GoHomeHeight altitude, UserData userData) | UserCallBack, |
| UserData | userData | ||
| ) |
Get go home altitude, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
UserCallBack callback function defined by user - retCode ErrorCode::ErrorCodeType error code
- altitude go home altitude
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ getGoHomeAltitudeSync()
| ErrorCode::ErrorCodeType FlightController::getGoHomeAltitudeSync | ( | GoHomeHeight & | altitude, |
| int | timeout | ||
| ) |
Get go home altitude, blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
altitude go home altitude timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
◆ getJoystickCommand()
| void FlightController::getJoystickCommand | ( | JoystickCommand & | joystickCommand | ) |
Wrapper function for get joystick command, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
JoystickCommand FlightController::JoystickCommand include x, y, z and yaw's command.
◆ getJoystickMode()
| void FlightController::getJoystickMode | ( | FlightJoystick::ControlMode & | joystickMode | ) |
Wrapper function for get joystick mode, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
JoystickMode FlightController::JoystickMode include horizontal logic,vertical logic,yaw logic, horizontal coordinate, stable mode.
◆ getRtkEnableAsync()
| void FlightController::getRtkEnableAsync | ( | void(*)(ErrorCode::ErrorCodeType retCode, RtkEnabled rtkEnable, UserData userData) | UserCallBack, |
| UserData | userData | ||
| ) |
Get RTK enable or disable, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
UserCallBack callback function defined by user - retCode ErrorCode::ErrorCodeType error code
- rtkEnable reference in RtkEnabled, RTK_DISABLE: disable, RTK_ENABLE: enable
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ getRtkEnableSync()
| ErrorCode::ErrorCodeType FlightController::getRtkEnableSync | ( | RtkEnabled & | rtkEnable, |
| int | timeout | ||
| ) |
Get rtk enable or disable, blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
rtkEnable reference in RtkEnabled, RTK_DISABLE: disable, RTK_ENABLE: enable timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
◆ getUpwardsAvoidanceEnabledAsync()
| void FlightController::getUpwardsAvoidanceEnabledAsync | ( | void(*)(ErrorCode::ErrorCodeType retCode, UpwardsAvoidEnable upwardsEnable, UserData userData) | UserCallBack, |
| UserData | userData | ||
| ) |
Get upwards avoidance enable or disable, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
UserCallBack callback function defined by user - retCode the OSDK ErrorCode::ErrorCodeType error code
- upwardsEnable UpwardsAvoidEnable, UPWARDS_AVOID_DISABLE: disable, UPWARDS_AVOID_ENABLE: enable
- userData the interface to pass userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ getUpwardsAvoidanceEnabledSync()
| ErrorCode::ErrorCodeType FlightController::getUpwardsAvoidanceEnabledSync | ( | UpwardsAvoidEnable & | upwardsAvoidEnable, |
| int | timeout | ||
| ) |
Get upwards avoidance enable or disable, blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
upwardsAvoidEnable UpwardsAvoidEnable UPWARDS_AVOID_DISABLE: disable, UPWARDS_AVOID_ENABLE: enable timeout blocking timeout in seconds
- Returns
- OSDK ErrorCode::ErrorCodeType error code
◆ joystickAction()
| void FlightController::joystickAction | ( | ) |
Wrapper function for set joystick action, non-blocking calls.
- Supported Platforms : M210V2, M300
- Note
- User must set the joystick mode and command before using this function to execute the command.
◆ killSwitch()
| ErrorCode::ErrorCodeType FlightController::killSwitch | ( | KillSwitch | cmd, |
| int | wait_timeout, | ||
| char | debugMsg[10] | ||
| ) |
Turn on or off the kill switch.
- Supported Platforms : M210V2, M300
- Parameters
-
cmd enable or disable the kill switch wait_timeout timeout for blocking call debugMsg inject debug message to flight control FW for logging, size limit: 10 bytes
- Returns
- ACK::ErrorCode struct with the acknowledgement from the FC
◆ obtainJoystickCtrlAuthorityAsync()
| void FlightController::obtainJoystickCtrlAuthorityAsync | ( | void(*)(ErrorCode::ErrorCodeType, UserData userData) | userCB, |
| UserData | userData, | ||
| int | timeout, | ||
| int | retryTime | ||
| ) |
Obtain the control authority of the api (non-blocking call)
- Supported Platforms : M210V2, M300
- Parameters
-
callback callback function userData user data (void ptr)
◆ obtainJoystickCtrlAuthoritySync()
| ErrorCode::ErrorCodeType FlightController::obtainJoystickCtrlAuthoritySync | ( | int | timeout | ) |
Obtain the control authority of the api (blocking call)
- Supported Platforms : M210V2, M300
- Parameters
-
timeout time(s) to wait for ACK
◆ releaseJoystickCtrlAuthorityAsync()
| void FlightController::releaseJoystickCtrlAuthorityAsync | ( | void(*)(ErrorCode::ErrorCodeType, UserData userData) | userCB, |
| UserData | userData, | ||
| int | timeout, | ||
| int | retryTime | ||
| ) |
Release the control authority of the api (non-blocking call)
- Supported Platforms : M210V2, M300
- Parameters
-
callback callback function userData user data (void ptr)
◆ releaseJoystickCtrlAuthoritySync()
| ErrorCode::ErrorCodeType FlightController::releaseJoystickCtrlAuthoritySync | ( | int | timeout | ) |
Release the control authority of the api (blocking call)
- Supported Platforms : M210V2, M300
- Parameters
-
timeout time(s) to wait for ACK
◆ setCollisionAvoidanceEnabledAsync()
| void FlightController::setCollisionAvoidanceEnabledAsync | ( | AvoidEnable | avoidEnable, |
| void(*)(ErrorCode::ErrorCodeType retCode, UserData userData) | UserCallBack, | ||
| UserData | userData | ||
| ) |
Set collision avoidance enable or disable, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
avoidEnable AvoidEnable, AVOID_DISABLE: disable, AVOID_ENABLE: enable UserCallBack callback function defined by user - retCode OSDK ErrorCode::ErrorCodeType error code
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ setCollisionAvoidanceEnabledSync()
| ErrorCode::ErrorCodeType FlightController::setCollisionAvoidanceEnabledSync | ( | AvoidEnable | avoidEnable, |
| int | timeout | ||
| ) |
Set collision avoidance enable or disable, blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
avoidEnable AvoidEnable, AVOID_DISABLE: disable, AVOID_ENABLE: enable timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
◆ setGoHomeAltitudeAsync()
| void FlightController::setGoHomeAltitudeAsync | ( | GoHomeHeight | altitude, |
| void(*)(ErrorCode::ErrorCodeType retCode, UserData userData) | UserCallBack, | ||
| UserData | userData | ||
| ) |
Set go home altitude, non-blocking calls.
- Supported Platforms : M210V2, M300
- Note
- If aircraft's current altitude is higher than the setting value of go home altitude, aircraft will go home using current altitude. Otherwise, it will climb to setting of go home altitude ,and then execute go home action. The details could be find in the documentation. Go home altitude setting is between MIN_GO_HOME_HEIGHT to MAX_FLIGHT_HEIGHT.
- Parameters
-
altitude go home altitude settings, unit: meter UserCallBack callback function defined by user - retCode ErrorCode::ErrorCodeType error code
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ setGoHomeAltitudeSync()
| ErrorCode::ErrorCodeType FlightController::setGoHomeAltitudeSync | ( | GoHomeHeight | altitude, |
| int | timeout | ||
| ) |
Set go home altitude, blocking calls.
- Supported Platforms : M210V2, M300
- Note
- If aircraft's current altitude is higher than the setting value of go home altitude, aircraft will go home using current altitude. Otherwise, it will climb to setting of go home altitude ,and then execute go home action. The details could be find in the documentation. Go home altitude setting is between MIN_GO_HOME_HEIGHT to MAX_FLIGHT_HEIGHT.
- Parameters
-
altitude go home altitude settings, unit: meter timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
◆ setHomeLocationAsync()
| void FlightController::setHomeLocationAsync | ( | HomeLocation | homeLocation, |
| void(*)(ErrorCode::ErrorCodeType retCode, UserData userData) | UserCallBack, | ||
| UserData | userData | ||
| ) |
Set customized GPS(not RTK) home location, non-blocking calls.
- Supported Platforms : M210V2, M300
- Note
- Set customized home location failed reasons may as follows:
- The distance between new home location and last home location is larger than MAX_FLY_RADIUS(20km)
- Set init home location failed after start aircraft.
- Parameters
-
homeLocation HomeLocation include latitude and longitude UserCallBack callback function defined by user - retCode ErrorCode::ErrorCodeType error code
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ setHomeLocationSync()
| ErrorCode::ErrorCodeType FlightController::setHomeLocationSync | ( | HomeLocation | homeLocation, |
| int | timeout | ||
| ) |
Set customized GPS(not RTK) home location, blocking calls.
- Supported Platforms : M210V2, M300
- Note
- Set customized home location failed reason may as follows:
- The distance between new home location and last home location is larger than MAX_FLY_RADIUS(20km).
- Set init home location failed after start aircraft.
- Parameters
-
homeLocation HomeLocation include latitude and longitude timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
◆ setHomeLocationUsingCurrentAircraftLocationAsync()
| void FlightController::setHomeLocationUsingCurrentAircraftLocationAsync | ( | void(*)(ErrorCode::ErrorCodeType retCode, UserData userData) | UserCallBack, |
| UserData | userData | ||
| ) |
Set home location using current aircraft GPS(not RTK) location, non-blocking calls.
- Supported Platforms : M210V2, M300
- Note
- Set home location failed reasons may as follows:
- Aircraft's gps level can't reach the condition of recording home location.
- There's no init home location before you set.
- Parameters
-
UserCallBack callback function defined by user - retCode ErrorCode::ErrorCodeType error code
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ setHomeLocationUsingCurrentAircraftLocationSync()
| ErrorCode::ErrorCodeType FlightController::setHomeLocationUsingCurrentAircraftLocationSync | ( | int | timeout | ) |
Set home location using current aircraft GPS(not RTK) location, blocking calls.
- Supported Platforms : M210V2, M300
- Note
- Set home location failed reasons may as follows:
- Aircraft's gps level can't reach the condition of recording home location.
- Set init home location failed after start aircraft.
- Parameters
-
timeout blocking timeout in seconds
◆ setJoystickCommand()
| void FlightController::setJoystickCommand | ( | const JoystickCommand & | JoystickCommand | ) |
Wrapper function for set joystick command, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
JoystickCommand FlightController::JoystickCommand include x, y, z and yaw's command.
◆ setJoystickMode()
| void FlightController::setJoystickMode | ( | const JoystickMode & | joystickMode | ) |
Wrapper function for set joystick mode, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
JoystickMode FlightController::JoystickMode include horizontal logic,vertical logic,yaw logic, horizontal coordinate, stable mode.
◆ setRtkEnableAsync()
| void FlightController::setRtkEnableAsync | ( | RtkEnabled | rtkEnable, |
| void(*)(ErrorCode::ErrorCodeType retCode, UserData userData) | UserCallBack, | ||
| UserData | userData | ||
| ) |
Set RTK enable or disable, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
rtkEnable reference in RtkEnabled, RTK_DISABLE: disable, RTK_ENABLE: enable UserCallBack callback function defined by user - retCode ErrorCode::ErrorCodeType error code
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ setRtkEnableSync()
| ErrorCode::ErrorCodeType FlightController::setRtkEnableSync | ( | RtkEnabled | rtkEnable, |
| int | timeout | ||
| ) |
Set RTK enable or disable, blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
rtkEnable reference in RtkEnabled, RTK_DISABLE: disable, RTK_ENABLE: enable timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
◆ setUpwardsAvoidanceEnabledAsync()
| void FlightController::setUpwardsAvoidanceEnabledAsync | ( | UpwardsAvoidEnable | upwardsAvoidEnable, |
| void(*)(ErrorCode::ErrorCodeType retCode, UserData userData) | UserCallBack, | ||
| UserData | userData | ||
| ) |
Set upwards avoidance enable or disable, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
upwardsAvoidEnable UpwardsAvoidEnable UPWARDS_AVOID_DISABLE: disable, UPWARDS_AVOID_ENABLE: enable UserCallBack callback function defined by user - retCode OSDK ErrorCode::ErrorCodeType error code
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ setUpwardsAvoidanceEnabledSync()
| ErrorCode::ErrorCodeType FlightController::setUpwardsAvoidanceEnabledSync | ( | UpwardsAvoidEnable | upwardsAvoidEnable, |
| int | timeout | ||
| ) |
Set upwards avoidance enable or disable, blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
UpwardsAvoidEnable UpwardsAvoidEnable UPWARDS_AVOID_DISABLE: disable, UPWARDS_AVOID_ENABLE: enable timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
◆ startConfirmLandingAsync()
| void FlightController::startConfirmLandingAsync | ( | void(*)(ErrorCode::ErrorCodeType retCode, UserData userData) | UserCallBack, |
| UserData | userData | ||
| ) |
Wrapper function for aircraft confirm landing and avoid ground, non-blocking calls.
- Supported Platforms : M210V2, M300
- Note
- When the clearance between the aircraft and the ground is less than 0.7m, the aircraft will pause landing and wait for user's confirmation.This api use for confirm landing. If the ground is not suitable for landing ,user must use RC to control it landing manually or force landing.
- Parameters
-
UserCallBack callback function defined by user - retCode ErrorCode::ErrorCodeType error code
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ startConfirmLandingSync()
| ErrorCode::ErrorCodeType FlightController::startConfirmLandingSync | ( | int | timeout | ) |
Wrapper function for aircraft confirm landing and avoid ground, blocking calls.
- Supported Platforms : M210V2, M300
- Note
- When the clearance between the aircraft and the ground is less than 0.7m, the aircraft will pause landing and wait for user's confirmation.This api use for confirm landing. If the ground is not suitable for landing ,user must use RC to control it landing manually or force landing.
- Parameters
-
timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
◆ startForceLandingAsync()
| void FlightController::startForceLandingAsync | ( | void(*)(ErrorCode::ErrorCodeType retCode, UserData userData) | UserCallBack, |
| UserData | userData | ||
| ) |
Wrapper function for aircraft force landing, non-blocking calls.
- Supported Platforms : M210V2, M300
- Note
- This api will ignore the smart landing function, when use this api, it will landing directly (would not stop at 0.7m and wait user's command),it may make the aircraft crash.
- Parameters
-
UserCallBack callback function defined by user - retCode ErrorCode::ErrorCodeType error code
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ startForceLandingSync()
| ErrorCode::ErrorCodeType FlightController::startForceLandingSync | ( | int | timeout | ) |
Wrapper function for aircraft force landing, blocking calls.
- Supported Platforms : M210V2, M300
- Note
- This api will ignore the smart landing function, when use this api, it will landing directly (would not stop at 0.7m and wait user's command),it may make the aircraft crash.
- Parameters
-
timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
◆ startGoHomeAsync()
| void FlightController::startGoHomeAsync | ( | void(*)(ErrorCode::ErrorCodeType retCode, UserData userData) | UserCallBack, |
| UserData | userData | ||
| ) |
Wrapper function for go home action, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
UserCallBack callback function defined by user - retCode ErrorCode::ErrorCodeType error code
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ startGoHomeSync()
| ErrorCode::ErrorCodeType FlightController::startGoHomeSync | ( | int | timeout | ) |
Wrapper function for go home action, blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
◆ startLandingAsync()
| void FlightController::startLandingAsync | ( | void(*)(ErrorCode::ErrorCodeType retCode, UserData userData) | UserCallBack, |
| UserData | userData | ||
| ) |
Wrapper function for aircraft landing, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
UserCallBack callback function defined by user - retCode ErrorCode::ErrorCodeType error code
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ startLandingSync()
| ErrorCode::ErrorCodeType FlightController::startLandingSync | ( | int | timeout | ) |
Wrapper function for aircraft landing, blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
◆ startTakeoffAsync()
| void FlightController::startTakeoffAsync | ( | void(*)(ErrorCode::ErrorCodeType retCode, UserData userData) | UserCallBack, |
| UserData | userData | ||
| ) |
Wrapper function for aircraft takeoff, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
UserCallBack callback function defined by user - retCode ErrorCode::ErrorCodeType error code
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ startTakeoffSync()
| ErrorCode::ErrorCodeType FlightController::startTakeoffSync | ( | int | timeout | ) |
Wrapper function for aircraft takeoff, blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
◆ turnOffMotorsAsync()
| void FlightController::turnOffMotorsAsync | ( | void(*)(ErrorCode::ErrorCodeType retCode, UserData userData) | UserCallBack, |
| UserData | userData | ||
| ) |
Wrapper function for turn off motors, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
UserCallBack callback function defined by user - retCode ErrorCode::ErrorCodeType error code
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ turnOffMotorsSync()
| ErrorCode::ErrorCodeType FlightController::turnOffMotorsSync | ( | int | timeout | ) |
Wrapper function for turn off motors, blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
◆ turnOnMotorsAsync()
| void FlightController::turnOnMotorsAsync | ( | void(*)(ErrorCode::ErrorCodeType retCode, UserData userData) | UserCallBack, |
| UserData | userData | ||
| ) |
Wrapper function for turn on motors, non-blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
UserCallBack callback function defined by user - retCode ErrorCode::ErrorCodeType error code
- userData the interface to transfer userData in when the callback is called
userData when UserCallBack is called, used in UserCallBack
◆ turnOnMotorsSync()
| ErrorCode::ErrorCodeType FlightController::turnOnMotorsSync | ( | int | timeout | ) |
Wrapper function for turn on motors, blocking calls.
- Supported Platforms : M210V2, M300
- Parameters
-
timeout blocking timeout in seconds
- Returns
- ErrorCode::ErrorCodeType error code
The documentation for this class was generated from the following files:
- osdk-core/api/inc/dji_flight_controller.hpp
- osdk-core/api/src/dji_flight_controller.cpp


NFK Demo Parser API
POST
Upload demo file as multipart/form-data.
Return demo summary. Query parameter "type" can be empty, "chat", "map" or "full" (include all demo actions).
GET
The same as POST method, but demo file is uploaded via query parameter "url"
Live Example
Return data:
Summary
Chat messages
Map data
Full data
https://github.com/HarpyWar/nfklib


Milestones
A GitHub Api backed Milestone thingy.
Milestone
Effort & Status
Task
loading...
Made by the
Hoodie Community
.


The Mask of Zorro (1998) 3 1/2 stars out of 4. Starring Antonio Banderas, Anthony Hopkins and Catherine Zeta-Jones.
The Mask of Zorro is everything you'd want a swashbuckler to be.

This rousing adventure spans 20 years and tells of the aged Don Diego de la Vega (Anthony Hopkins), the original Zorro, who after languishing in prison for 20 years escapes and finds an apt pupil, Alejandro Murieta (Antonio Banderas), to train and take his place. Think of it as a 19th-century "Rapier Kid."
Don Diego seeks revenge against Don Raphael Montero (Stuart Wilson) who, as the despised governor of California 20 years earlier, was responsible for the death of Don Diego's wife, killed in the struggle to capture Zorro.
Montero, who fled to Spain with Elena, Diego's baby daughter, has returned to California with the now-grown girl who believes the villain is her father. Montero's scheme is to buy California from Mexico and establish an independent nation with himself as leader.
Thwarting him at every turn is the new, young Zorro, Alejandro, trained by Diego to be a "servant of the people," to protect them and right wrongs.
Under the able direction of Martin Campbell (Goldeneye), The Mask of Zorro is a sweeping adventure with an old-fashioned sensibility, recalling the days when Errol Flynn and Douglas Fairbanks (Sr. and Jr.) picked up a sword to defend the helpless, protect the crown and defeat all blackguards.
However, the movie does offer a nod to the '90s. Elena (the stunning Catherine Zeta-Jones) is a spunky lass who speaks her mind and can handle a sword as well as any man.
Hopkins is wise, patient and determined as the aged Diego, passing on not only his knowledge of how to handle a sword and whip, but how to outfox the opposition to his hot-headed student.
Banderas is charming, a bit self-depreciating and charismatic as the new man in black. He handles a sword with skill, dances well and woos Elena with panache and wit.
Wilson is a fine, brains heavy who leaves much of the dirty work to his murderous aide, Capt. Love (the handsome and chilling Matt Letscher).
The duels are exciting and flashy, enhanced by a wonderfully full score by Academy Award-winner James Horner.
The Mask of Zorro is a grand time, filled with colorful characters and grand landscapes. It recalls a time when movies were magical.
Bob Bloom is the film critic at the Journal and Courier in Lafayette, Ind. You can e-mail him at<EMAIL_ADDRESS>or at<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


nfsservctl - syscall interface to kernel nfs daemon
#include <linux/nfsd/syscall.h>
long nfsservctl(int cmd, struct nfsctl_arg *argp,
union nfsctl_res *resp);
Note: Since Linux 3.1, this system call no longer exists. It has been
replaced by a set of files in the nfsd filesystem; see nfsd(7).
/*
* These are the commands understood by nfsctl().
*/
#define NFSCTL_SVC 0 /* This is a server process. */
#define NFSCTL_ADDCLIENT 1 /* Add an NFS client. */
#define NFSCTL_DELCLIENT 2 /* Remove an NFS client. */
#define NFSCTL_EXPORT 3 /* Export a filesystem. */
#define NFSCTL_UNEXPORT 4 /* Unexport a filesystem. */
#define NFSCTL_UGIDUPDATE 5 /* Update a client's UID/GID map
(only in Linux 2.4.x and earlier). */
#define NFSCTL_GETFH 6 /* Get a file handle (used by mountd)
(only in Linux 2.4.x and earlier). */
struct nfsctl_arg {
int ca_version; /* safeguard */
union {
struct nfsctl_svc u_svc;
struct nfsctl_client u_client;
struct nfsctl_export u_export;
struct nfsctl_uidmap u_umap;
struct nfsctl_fhparm u_getfh;
unsigned int u_debug;
} u;
}
union nfsctl_res {
struct knfs_fh cr_getfh;
unsigned int cr_debug;
};
On success, zero is returned. On error, -1 is returned, and errno is set
appropriately.
This system call was removed from the Linux kernel in version 3.1. Library
support was removed from glibc in version 2.28.
This call is Linux-specific.
This page is part of release 5.05 of the Linux man-pages project. A
description of the project, information about reporting bugs, and the latest
version of this page, can be found at https://www.kernel.org/doc/man-pages/.


_Black_Mask_ (R) *** (out of ****)
After stealing the show from Mel Gibson and company in _Lethal_Weapon 4_, it was only a matter of time before American distributors started invading the vault of Jet Li's Hong Kong work. The first of what is sure to be a long line of wide American releases is _Black_Mask_, a gritty, hyperstylish 1996 adventure that plugs Li's talents into a superhero yarn. However, as fun and exciting as the film often is, it is far from Li's best showcase.
That distinction belongs to _Fist_of_Legend_, an electrifying 1994 reworking of the Bruce Lee vehicle _The_Chinese_Connection_ whose American distribution (through Quentin Tarantino's Rolling Thunder Pictures) was scrapped. However, it is easy to see why _Black_Mask_ ended up as his first HK effort to widely reach U.S. screens. It isn't so much that the film is a diverting entertainment (which it certainly is), but that it is one of Li's few actioners set in contemporary times. Most of his high-flying films, from _Fist_of Legend_ to his starmaking _Once_Upon_a_Time_in_China_ series, were set in period China--not exactly inaccessible to Yank audiences considering the amount of action in these films, but a difficult sell nonetheless.
_Black_Mask_ is much more easily marketable: a dark, extremely violent comic-book-style adventure where Li plays Tsui, a medically-enhanced supersoldier who escapes the shady outfit that created him. He attempts to live a quiet existence as a pacificist librarian, but soon he jolted back to action when his former cohorts have taken to killing off all of Hong Kong's drug lords. His identity kept a secret under a black mask (hence the title), Tsui, with the reluctant help of aptly named policeman Rock (Lau Ching Wan), attempts to set things right.
_Black_Mask_ has much more of a technical sheen than any of Jackie Chan's fun yet rather crudely produced HK imports. The English dubbing job is actually competently done (Li doesn't do his own dialogue, but his stand-in does an adequate job). There is some inventive production and costume design, as well as some often stunning cinematography. Director Daniel Lee's strong suit is definitely his visual style, which appears to be influenced by the frenetic camera techniques of Michael Bay.
While the glossy approach keeps the film never less than visually stimulating, it also shortchanges the many fight sequences, which, of course, are what people see Jet Li films for. Granted, no amount of MTV-style editing can rob Li's acrobatic martial arts skills of their electrifying effect, but the quick cuts do dilute it a bit. One is left in greater awe when one is actually able to see what Li can and does do--without any flashy frills.
But until _Fist_of_Legend_ or any of his better showcases--such as _Once_Upon_a_Time_in_China_, _Fong_Sai-Yuk_, or _The_Tai-Chi_Master_, the latter which co-stars _Tomorrow_Never_Dies_ scene stealer Michelle Yeoh--is made available to the masses (those films are all available, though on a fairly limited basis, on video), _Black_Mask_ nicely gets the job done as either a showcase for Jet Li's athletic talents or an undemanding blast of action and mayhem.
Michael Dequina
<EMAIL_ADDRESS>|<EMAIL_ADDRESS>Mr. Brown's Movie Site: http://welcome.to/mrbrown
CompuServe Hollywood Hotline: http://www.HollywoodHotline.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


ESI Lib
Give Us A Feedback !
Contribution & Feedback
This section is still under constraction !
- Year -
1CPI
2CPI
1CS
2CS
3CS


This project doesn't really do much other than provide some tests. visit those at @tests alternatively run the tests via the command line.
revel test github.com/jgraham909/revmgo/testapp


int pg_transaction_status ( resource $connection )
Returns the current in-transaction status of the server. Caution pg_transaction_status() will give incorrect results when using a PostgreSQL 7.3 server that has the parameter autocommit set to off. The server-side autocommit feature has been deprecated and does not exist in later server versions.
The status can be PGSQL_TRANSACTION_IDLE (currently idle), PGSQL_TRANSACTION_ACTIVE (a command is in progress), PGSQL_TRANSACTION_INTRANS (idle, in a valid transaction block), or PGSQL_TRANSACTION_INERROR (idle, in a failed transaction block). PGSQL_TRANSACTION_UNKNOWN is reported if the connection is bad. PGSQL_TRANSACTION_ACTIVE is reported only when a query has been sent to the server and not yet completed.


This page is to help confirm that you can successfully communicate with Couch Potato, if you still have issues please post on the forums or the GitHub repo.
{{#each tests}}Service: {{service}}
API/URL: {{api}}
Connection status: Attempting to connect...please be patient


Contact Me!

Create your own JotForm


| < Day Day Up > |
Chapter 14. Alternative DB2 Application Development MethodsIN THIS CHAPTER Part II has dealt primarily with DB2 application development using embedded SQL in a third-generation language such as COBOL. However, as I mentioned at the outset of Part II, you can use other methods to develop DB2 applications. With the growing popularity of client/server computing, these methods are gaining acceptance in the IT community. In this chapter, I discuss the ramifications of using six alternative but perhaps complementary development methods to build DB2 applications: using stand-alone SQL, client/server programming languages, ODBC (Call Level Interface), fourth-generation languages, CASE tools, and report writers. |
| < Day Day Up > |


Force users to renew their passwords after a given period of time. Forcing users to renew their passwords reduces the risk of valid credentials becoming exposed. While this technique can prevent attackers from obtaining the valid credentials through the use of a Credentials Brute Force Attack or a Credentials Dictionary Attack, it can also reduce the business risk associated with any instances of discovered or leaked valid credentials.
The following code is part of the application's authentication routine. Because the application fails to force the user to renew their password, it allows more time for an attacker to guess the user's password.
String dbStatement = "select login_attempts from users"
+ "where user = ? and pass = ?;";
PreparedStatement st = dbConnection.prepareStatement(dbStatement);
st.setString(1, user);
st.setString(2, passDigest);
ResultSet rs = st.executeQuery();
if (rs.first())
{
userIsValid = true;
loginCount = rs.getInt(1);
}
else
{
userIsValid = false;
}
rs.close();
if(userIsValid)
{
// The application fails to check the password's maturity
}
The following code is part of the application's authentication routine. Because the application forces its users to renew their passwords, there is limited time for an attacker to guess the user's password or to use a guessed password.
String dbStatement = "select login_attempts from users"
+ "where user = ? and pass = ?;";
PreparedStatement st = dbConnection.prepareStatement(dbStatement);
st.setString(1, user);
st.setString(2, passDigest);
ResultSet rs = st.executeQuery();
if (rs.first())
{
userIsValid = true;
loginCount = rs.getInt(1);
}
else
{
userIsValid = false;
}
rs.close();
if(userIsValid)
{
// The application checks the password's maturity
checkPasswordMaturity(user);
}
...
private void checkPasswordMaturity(String user)
throws UserMustChangePasswordException
{
Connection dbConnection = MyApp.getDBConnection();
String dbStatement = "select * from passHistory"
+ "where userid = ? and"
+ " last_changed < (current_timestamp - interval '30' day);";
PreparedStatement st = dbConnection.prepareStatement(dbStatement);
st.setString(1, user);
ResultSet rs = st.executeQuery();
if (rs.first())
{
rs.close();
throw new UserMustChangePasswordException();
}
rs.close();
}


12 fans |
🎧 An Introduction to Electronic MusicA small taste of the basics of electronic music. Learn the concepts behind creating and modifying sounds in an electronic music system. Learn the ideas behind the tools and systems we use to create electronic music. |
Learn anything, adapted for you. Free.


| up | Examples | |
Examples
We have attempted to provide at least one example for each element. (There are also some examples for many of the attributes and types). The examples for the elements are used for:
- Validation. The concatenated examples are validated against the schema. This ensures the schema is valid and also provides examples of how to write valid documents. Note that XMLSchema validators sometimes have different levels of strictness. In particular Xerces does not allow documentation in references to elements; this has been highlighted in public discussion. The only area where our examples do not always validate are in namespaceed data values (e.g. within dictRef values).
- Guidelines for usage. The examples show minimal examples of how each element can be used and so are a guide to its semantics.
- Code generation. The schema code will autogenerate Java code for each example. This will show how to construct a DOM containing this element, and also how to read such a DOM element. It also acts as a secondary check on the validity of the autogenerated code.
By convention an element foo will have an example foo1.xml. There may be other examples (foo2.xml, etc.) which are often more complex and so will not be used for autogeneration.
Some examples:
-
<molecule id="m1" title="angle example" >
<?cml example="compilable"?>
<atomArray>
<atom id="a1"/>
<atom id="a2"/>
<atom id="a3"/>
</atomArray>
<angle units="degrees" atomRefs3="a1 a2 a3">123.4</angle>
</molecule>
Note:
- This is the example for angle, even although the root element is not angle.
- The title attribute should reflect this.
- The processing instruction is probably obsolete
- The example is validatable (e.g. the angle value must conform to nonNegativeAngleType).
-
<atom id="a1" title="O3'" elementType="O"
formalCharge="1" hydrogenCount="1"
isotope="17" occupancy="0.7"
x2="1.2" y2="2.3"
x3="3.4" y3="4.5" z3="5.6"
convention="abc:chem" dictRef="chem:atom"
>
<scalar title="dipole" dictRef="ccml:dipole"
units="units:debye">0.2</scalar>
<atomParity atomRefs4="a3 a7 a2 a4">1</atomParity>
<electron id="e1" atomRef="a1" count="2"/>
</atom>
Note:
- This demonstrates all the main attributes and child elements.
- The examples should all be well-formed XML documents.


Welcome to [URL] (the "Site").
We understand that privacy online is important to users of our Site, especially when conducting business. This statement governs our privacy policies with respect to those users of the Site ("Visitors") who visit without transacting business and Visitors who register to transact business on the Site and make use of the various services offered by [URL] (collectively, "Services") ("Authorized Customers").
Personally Identifiable Information
refers to any information that identifies or can be used to identify, contact, or locate the person to whom such information pertains, including, but not limited to, name, address, phone number, fax number, email address, financial profiles, social security number, and credit card information. Personally Identifiable Information does not include information that is collected anonymously (that is, without identification of the individual user) or demographic information not connected to an identified individual.
What Personally Identifiable Information is collected?
We may collect basic user profile information from all of our Visitors. We collect the following additional information from our Authorized Customers: the names, addresses, phone numbers and email addresses of Authorized Customers, the nature and size of the business, and the nature and size of the advertising inventory that the Authorized Customer intends to purchase or sell.
What organizations are collecting the information?
In addition to our direct collection of information, our third party service vendors (such as credit card companies, clearinghouses and banks) who may provide such services as credit, insurance, and escrow services may collect this information from our Visitors and Authorized Customers. We do not control how these third parties use such information, but we do ask them to disclose how they use personal information provided to them from Visitors and Authorized Customers. Some of these third parties may be intermediaries that act solely as links in the distribution chain, and do not store, retain, or use the information given to them.
How does the Site use Personally Identifiable Information?
We use Personally Identifiable Information to customize the Site, to make appropriate service offerings, and to fulfill buying and selling requests on the Site. We may email Visitors and Authorized Customers about research or purchase and selling opportunities on the Site or information related to the subject matter of the Site. We may also use Personally Identifiable Information to contact Visitors and Authorized Customers in response to specific inquiries, or to provide requested information.
With whom may the information be shared?
Personally Identifiable Information about Authorized Customers may be shared with other Authorized Customers who wish to evaluate potential transactions with other Authorized Customers. We may share aggregated information about our Visitors, including the demographics of our Visitors and Authorized Customers, with our affiliated agencies and third party vendors. We also offer the opportunity to "opt out" of receiving information or being contacted by us or by any agency acting on our behalf.
How is Personally Identifiable Information stored?
Personally Identifiable Information collected by [URL] is securely stored and is not accessible to third parties or employees of [URL] except for use as indicated above.
What choices are available to Visitors regarding collection, use and distribution of the information?
Visitors and Authorized Customers may opt out of receiving unsolicited information from or being contacted by us and/or our vendors and affiliated agencies by responding to emails as instructed, or by contacting us at [Email].
Are Cookies Used on the Site?
Cookies are used for a variety of reasons. We use Cookies to obtain information about the preferences of our Visitors and the services they select. We also use Cookies for security purposes to protect our Authorized Customers. For example, if an Authorized Customer is logged on and the site is unused for more than 10 minutes, we will automatically log the Authorized Customer off.
How does [URL] use login information?
[URL] uses login information, including, but not limited to, IP addresses, ISPs, and browser types, to analyze trends, administer the Site, track a user's movement and use, and gather broad demographic information.
What partners or service providers have access to Personally Identifiable Information from Visitors and/or Authorized Customers on the Site?
[URL] has entered into and will continue to enter into partnerships and other affiliations with a number of vendors. Such vendors may have access to certain Personally Identifiable Information on a need to know basis for evaluating Authorized Customers for service eligibility. Our privacy policy does not cover their collection or use of this information. Disclosure of Personally Identifiable Information to comply with law. We will disclose Personally Identifiable Information in order to comply with a court order or subpoena or a request from a law enforcement agency to release information. We will also disclose Personally Identifiable Information when reasonably necessary to protect the safety of our Visitors and Authorized Customers.
How does the Site keep Personally Identifiable Information secure?
All of our employees are familiar with our security policy and practices. The Personally Identifiable Information of our Visitors and Authorized Customers is only accessible to a limited number of qualified employees who are given a password in order to gain access to the information. We audit our security systems and processes on a regular basis. Sensitive information, such as credit card numbers or social security numbers, is protected by encryption protocols, in place to protect information sent over the Internet. While we take commercially reasonable measures to maintain a secure site, electronic communications and databases are subject to errors, tampering and break-ins, and we cannot guarantee or warrant that such events will not take place and we will not be liable to Visitors or Authorized Customers for any such occurrences.
How can Visitors correct any inaccuracies in Personally Identifiable Information?
Visitors and Authorized Customers may contact us to update Personally Identifiable Information about them or to correct any inaccuracies by emailing us at [Email].
Can a Visitor delete or deactivate Personally Identifiable Information collected by the Site?
We provide Visitors and Authorized Customers with a mechanism to delete/deactivate Personally Identifiable Information from the Site's database by contacting [Email]. However, because of backups and records of deletions, it may be impossible to delete a Visitor's entry without retaining some residual information. An individual who requests to have Personally Identifiable Information deactivated will have this information functionally deleted, and we will not sell, transfer, or use Personally Identifiable Information relating to that individual in any way moving forward.
What happens if the Privacy Policy Changes?
We will let our Visitors and Authorized Customers know about changes to our privacy policy by posting such changes on the Site. However, if we are changing our privacy policy in a manner that might cause disclosure of Personally Identifiable Information that a Visitor or Authorized Customer has previously requested not be disclosed, we will contact such Visitor or Authorized Customer to allow such Visitor or Authorized Customer to prevent such disclosure.
Links:
This web site contains links to other web sites. Please note that when you click on one of these links, you are moving to another web site. We encourage you to read the privacy statements of these linked sites as their privacy policies may differ from ours.


--- title: Peter Pan date: 1998-11-09T11:00:00.000Z gender: Boy city: Ryde thinkLotrRules: Of course ---
This Is Very Good,Please Write Me A Letter


You forge a telepathic link among up to eight w illing creatures of your choice within range, psychically linking each creature to all the others for the duration.
Creatures with Intelligence scores of 2 or less aren't affected by this spell.
Until the spell ends, the targets can communicate telepathically through the bond whether or not they have a common language. The communication is possible over any distance, though it can't extend to other planes of existence.


RusticNES
Play
Load
Input
Jam
zeta0134
-
Source on Github
Now Playing:
Super Bat Buncher
-
Morphcat Games
Now Playing:
2A03 Puritans
- Programmed by
Rainwarrior
, Music by
bitpuritans
- Album on
Bandcamp
- Physical Cartridge @
INFINITELIVES
Now Playing:
Famicompo Pico 1
- Programmed by
Rainwarrior
- Album on
Bandcamp
- Physical Cartridge @
INFINITELIVES
Now Playing:
Famicompo Pico 2
- Programmed by
Rainwarrior
P1 - Standard
A
B
Select
Start
Up
Down
Left
Right
P2 - Standard
A
B
Select
Start
Up
Down
Left
Right


A Network is a collection of independent entities that are arranged in such a manner
as to exchange data,information or resources.A computer network is a collection of computers linked
together using transmission media for the purpose of communication and resource sharing.
Transmission media is any physical or non-physical link between two or more computers in which a signal
can be made to flow from source to destination.Some of the shared resources include programs,printer,
fax machines,modems,storage devices,communication links etc.
-Data signal-Voltage level in the circuit representing flow of data.Data signals can either be analog or digital in nature.Analog data is made up of continuous varying waveform. Digital data is made up of non-continuous discrete waveform.


title = "Learn" layout = "default" == use Gdp\Quiz\Models\Quiz; use Gdp\Quiz\Models\Question; use Gdp\Quiz\Models\Answer; function onInit() { $id = $this->param('id'); $this['quiz'] = Quiz::find($id); $this['questions'] = Question::where('quiz_id', $id)->get(); // $this['answers'] = Answer::where('question_id', $question_id)->get(); $this['answers'] = Answer::where('question_id', $id)->get(); /* $this['questions'] = Question::where([ 'quiz_id' => $id, ])->get(); */ /* $this['answers'] = Answer::where([ 'question_id' => 1, ])->get(); */ } ==
{{ answer.caption }}
{{ answer.id }}
belongs to question with id of {{ answer.question_id }}
{% endif %} {% else %}Nothing right now
{% endfor %} {% endfor %}


Logging in Kubernetes with Elasticsearch, Kibana, and Fluentd
This tutorial looks at how to spin up a single node Elasticsearch cluster along with Kibana and Fluentd on Kubernetes.
Dependencies:
- Docker v18.09.1
- Kubernetes v1.13.2
- Elasticsearch v6.5.4
- Kibana v6.5.4
- Fluentd v1.3.2
Contents
Minikube
Minikube is a tool that makes it easy for developers to use and run a “toy” Kubernetes cluster locally. It’s a great way to quickly get a cluster up and running so you can start interacting with the Kubernetes API.
If you already have a Kubernetes cluster up and running that you’d like to use, you can skip this section.
Follow the official quickstart guide to get Minikube installed along with:
- A Hypervisor (like VirtualBox or HyperKit) to manage virtual machines
- Kubectl to deploy and manage apps on Kubernetes
If you’re on a Mac, we recommend installing Kubectl, Hyperkit, and Minikube with Homebrew:
$ brew update
$ brew install kubectl
$ brew install docker-machine-driver-hyperkit
$ brew cask install minikube
By default, the Minikube VM is configured to use 1GB of memory and 2 CPU cores. This is not sufficient for Elasticsearch, so be sure to increase the memory in your Docker client (for HyperKit) or directly in VirtualBox. Then, when you start Minikube, pass the memory and CPU options to it:
$ minikube start --vm-driver=hyperkit --memory 8192 --cpus 4
or
$ minikube start --memory 8192 --cpus 4
Once up, make sure you can view the dashboard:
$ minikube dashboard
Then, create a new namespace:
$ kubectl create namespace logging
namespace/logging created
If you run into problems with Minikube, it’s often best to remove it completely and start over.
For example:
$ minikube stop; minikube delete
$ rm /usr/local/bin/minikube
$ rm -rf ~/.minikube
# re-download minikube
$ minikube start
Elastic
We’ll start with Elasticsearch.
You can find the code in the efk-kubernetes repo on GitHub.
kubernetes/elastic.yaml:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: elasticsearch
spec:
selector:
matchLabels:
component: elasticsearch
template:
metadata:
labels:
component: elasticsearch
spec:
containers:
- name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:6.5.4
env:
- name: discovery.type
value: single-node
ports:
- containerPort: 9200
name: http
protocol: TCP
resources:
limits:
cpu: 500m
memory: 4Gi
requests:
cpu: 500m
memory: 4Gi
---
apiVersion: v1
kind: Service
metadata:
name: elasticsearch
labels:
service: elasticsearch
spec:
type: NodePort
selector:
component: elasticsearch
ports:
- port: 9200
targetPort: 9200
So, this will spin up a single node Elasticsearch pod in the cluster along with a NodePort service to expose the pod to the outside world.
Create:
$ kubectl create -f kubernetes/elastic.yaml -n logging
deployment.extensions/elasticsearch created
service/elasticsearch created
Verify that both the pod and service were created:
$ kubectl get pods -n logging
NAME READY STATUS RESTARTS AGE
elasticsearch-bb9f879-d9kmg 1/1 Running 0 75s
$ kubectl get service -n logging
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch NodePort <IP_ADDRESS> <none> 9200:30531/TCP 86s
Take note of the exposed port–e.g, 30531
. Then, grab the Minikube IP and make sure you can cURL that pod:
$ curl $(minikube ip):30531
You should see something similar to:
{
"name" : "9b5Whvv",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "-qMwo61ATv2KmbZsf2_Tpw",
"version" : {
"number" : "6.5.4",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "d2ef93d",
"build_date" : "2018-12-17T21:17:40.758843Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
Kibana
Next, let’s get Kibana up and running.
kubernetes/kibana.yaml:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kibana
spec:
selector:
matchLabels:
run: kibana
template:
metadata:
labels:
run: kibana
spec:
containers:
- name: kibana
image: docker.elastic.co/kibana/kibana:6.5.4
env:
- name: ELASTICSEARCH_URL
value: http://elasticsearch:9200
- name: XPACK_SECURITY_ENABLED
value: "true"
ports:
- containerPort: 5601
name: http
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: kibana
labels:
service: kibana
spec:
type: NodePort
selector:
run: kibana
ports:
- port: 5601
targetPort: 5601
Like before, this deployment will spin up a single Kibana pod that gets exposed via a NodePort service. Take note of the two environment variables:
ELASTICSEARCH_URL
- URL of the Elasticsearch instanceXPACK_SECURITY_ENABLED
- enables X-Pack security
Refer to the Running Kibana on Docker guide for more info on these variables.
Create:
$ kubectl create -f kubernetes/kibana.yaml -n logging
Verify:
$ kubectl get pods -n logging
NAME READY STATUS RESTARTS AGE
elasticsearch-bb9f879-d9kmg 1/1 Running 0 17m
kibana-7f6686674c-mjlb2 1/1 Running 0 60s
$ kubectl get service -n logging
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch NodePort <IP_ADDRESS> <none> 9200:30531/TCP 17m
kibana NodePort <IP_ADDRESS> <none> 5601:32683/TCP 74s
Test this in your browser at http://MINIKUBE_IP:KIBANA_EXPOSED_PORT
.
Fluentd
In this example, we’ll deploy a Fluentd logging agent to each node in the Kubernetes cluster, which will collect each container’s log files running on that node. We can use a DaemonSet for this.
First, we need to configure RBAC (role-based access control) permissions so that Fluentd can access the appropriate components.
kubernetes/fluentd-rbac.yaml:
apiVersion: v1
kind: ServiceAccount
metadata:
name: fluentd
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: fluentd
namespace: kube-system
rules:
- apiGroups:
- ""
resources:
- pods
- namespaces
verbs:
- get
- list
- watch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: fluentd
roleRef:
kind: ClusterRole
name: fluentd
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: fluentd
namespace: kube-system
In short, this will create a ClusterRole which grants get, list, and watch permissions on pods and namespace objects. The ClusterRoleBinding then binds the ClusterRole to the ServiceAccount within the kube-system
namespace. Refer to the Using RBAC Authorization guide to learn more about RBAC and ClusterRoles.
Create:
$ kubectl create -f kubernetes/fluentd-rbac.yaml
Now, we can create the DaemonSet.
kubernetes/fluentd-daemonset.yaml:
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: fluentd
namespace: kube-system
labels:
k8s-app: fluentd-logging
version: v1
kubernetes.io/cluster-service: "true"
spec:
template:
metadata:
labels:
k8s-app: fluentd-logging
version: v1
kubernetes.io/cluster-service: "true"
spec:
serviceAccount: fluentd
serviceAccountName: fluentd
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
containers:
- name: fluentd
image: fluent/fluentd-kubernetes-daemonset:v1.3-debian-elasticsearch
env:
- name: FLUENT_ELASTICSEARCH_HOST
value: "elasticsearch.logging"
- name: FLUENT_ELASTICSEARCH_PORT
value: "9200"
- name: FLUENT_ELASTICSEARCH_SCHEME
value: "http"
- name: FLUENT_UID
value: "0"
resources:
limits:
memory: 200Mi
requests:
cpu: 100m
memory: 200Mi
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
terminationGracePeriodSeconds: 30
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
Be sure to review Kubernetes Logging with Fluentd along with the sample Daemonset. Make sure FLUENT_ELASTICSEARCH_HOST
aligns with the SERVICE_NAME.NAMESPACE
of Elasticsearch within your cluster.
Deploy:
$ kubectl create -f kubernetes/fluentd-daemonset.yaml
If you’re running Kubernetes as a single node with Minikube, this will create a single Fluentd pod in the kube-system
namespace.
$ kubectl get pods -n kube-system
coredns-576cbf47c7-mhxbp 1/1 Running 0 120m
coredns-576cbf47c7-vx7m7 1/1 Running 0 120m
etcd-minikube 1/1 Running 0 119m
fluentd-kxc46 1/1 Running 0 89s
kube-addon-manager-minikube 1/1 Running 0 119m
kube-apiserver-minikube 1/1 Running 0 119m
kube-controller-manager-minikube 1/1 Running 0 119m
kube-proxy-m4vzt 1/1 Running 0 120m
kube-scheduler-minikube 1/1 Running 0 119m
kubernetes-dashboard-5bff5f8fb8-d64qs 1/1 Running 0 120m
storage-provisioner 1/1 Running 0 120m
Take note of the logs:
$ kubectl logs fluentd-kxc46 -n kube-system
You should see that Fluentd connect to Elasticsearch within the logs:
Connection opened to Elasticsearch cluster =>
{:host=>"elasticsearch.logging", :port=>9200, :scheme=>"http"}
To see the logs collected by Fluentd in Kibana, click “Management” and then select “Index Patterns” under “Kibana”.
Click the “Create index pattern” button. Select the new Logstash index that is generated by the Fluentd DaemonSet. Click “Next step”.
Set the “Time Filter field name” to “@timestamp”. Then, click “Create index pattern”.
Click “Discover” to view your application logs.
Sanity Check
Let’s spin up a quick Node.js app to test.
Point your local Docker client at the Minikube Docker daemon, and then build the image:
$ eval $(minikube docker-env)
$ docker build -t fluentd-node-sample:latest -f sample-app/Dockerfile sample-app
Create the deployment:
$ kubectl create -f kubernetes/node-deployment.yaml
Take a quick look at the app in sample-app/index.js:
const SimpleNodeLogger = require('simple-node-logger');
const opts = {
timestampFormat:'YYYY-MM-DD HH:mm:ss.SSS'
};
const log = SimpleNodeLogger.createSimpleLogger(opts);
(function repeatMe() {
setTimeout(() => {
log.info('it works');
repeatMe();
}, 1000)
})();
So, it just logs 'it works'
to stdout every second.
Back in “Discover” on the Kibana dashboard, add the following filter:
- Field:
kubernetes.pod_name
- Operator:
is
- Value:
node
Now, you should be able to see the it works
log in the stream.
Again, you can find the code in the efk-kubernetes repo on GitHub.


Oppo offers the Reno 10X special edition with RM1,446 worth of freebies
by Alexander WongThe OPPO Reno 10X Zoom special edition with 12GB RAM will be arriving in Malaysia on 30th November. If you plan getting on, Oppo Malaysia is bundling freebies worth RM1,446 during its first day sale at The Gardens Mall this coming Saturday.
The OPPO Reno 10x 12GB RAM Special Edition will be bundled with a Fujifilm Instax Mini Link Smartphone Printer worth RM548, an Oppo Enco Q1 Wireless Noise-cancelling headphones worth RM599 and a VOOC Powerbank worth RM299.
Customers who place their pre-order before 30 November can collect your phone in advance and walk-in customers can also purchase on-the-spot.
The new Oppo Flagship store is located at Lot T-230 on the 3rd Floor, The Gardens Mall. At the moment, the official price isn’t revealed yet but we reckon it should be priced above RM3,000. The Reno 10X Zoom with 8GB RAM was originally launched in Malaysia at RM3,399 but the price is now reduced to RM2,999.
[ SOURCE ]


Yanga win Chapa Dimba Coast Region title
by PHILIP ONYANGOIn Summary
- The Malindi-based side beat Kaya Stars from Kaloleni 4-0 in the final
- The equally explosive girls final saw Kwale Queens' Lucy Kwekwe claim a brace before Saumu Baya completed the rout in the 82nd minute
- After the regional finals, an all-Star team comprising of 16 girls and 16 boys will be selected to attend a 10-day training camp in Spain
Yanga FC from Malindi turned on class to win the Chapa Dimba na Safaricom Coast Region boys' title at Bomu Stadium, Mombasa on Sunday night.
The Malindi-based side beat Kaya Stars from Kaloleni 4-0 in the final. Kwale Queens emerged champions in the girls category after seeing off Malindi Action 3-0.
Yanga and Kwale Queens will now represent Coast Region at the national finals to be staged at the same venue in June next year. Both winners took home Sh200,000 while the runners-up walked away with Sh100,000.
Yanga coach Abel Bellamy was happy after guiding his charges to their maiden Chapa Dimba trophy. "My boys were focused for the top prize and I'm happy we got the results we wanted," said Bellamy.
Kaya Stars coach Ken Sitati blamed lack of concentration for their loss. "We played well but conceded goals in quick succession which disoriented us but we live to fight another day," said Sitati.
In the boys final played on Sunday night, Mohamed Awadh opened the scoring with a fourth minute strike for a 1-0 half-time score before Ali Mohammed and Lemmy Julo scored the second and third in the 47th and 53rd minutes. Julo, who emerged top scorer with three goals, completed his brace in the 70th minute to seal the win.
Kaya Stars however had goalkeeper Stanley Dena to thank for planting respect on the scoreline with a series of fine saves.
The equally explosive girls final saw Kwale Queens' Lucy Kwekwe claim a brace before Saumu Baya completed the rout in the 82nd minute.
The competition now moves to Nanyuki for the Central Region finals set for January 18-19 at Nanyuki Stadium.
In the first regional final, Garissa’s Berlin defended their North Eastern regional title after beating Al Ansar 2-0 at the Technical Training College Grounds (TCC) in Garissa in a repeat of last season’s final.
After the regional finals, an all-Star team comprising of 16 girls and 16 boys will be selected to attend a 10-day training camp in Spain and play friendlies against academies of top La Liga clubs.


Cisco Spark iOS SDK
Want to have secure and convenient audio and video interactions integrated into your iOS application? Cisco Spark iOS SDK is designed to ease the developer experience and accelerate the integration of pervasive into mobile applications. This guide will get you up and running quickly with Cisco Spark iOS SDK in your iOS application.
Cisco Spark iOS SDK is written in Swift.
Setup
Assuming you already have your Xcode project, e.g., MySparkApp, for your iOS applicaiton. Here are the steps to integrate SparkSDK into your Xcode project using CocoaPods:
Install CocoaPods:
gem install cocoapods
Setup Cocoapods:
pod setup
Create a new file
Podfile
with following content in your MySparkApp project directory:source 'https://github.com/CocoaPods/Specs.git' platform :ios, '9.0' use_frameworks! target 'MySparkApp' do pod 'SparkSDK' end
Install SparkSDK from your MySparkApp project directory:
pod install
Example
Below is code of a demo of the SDK usage:
- Create the Spark SDK with OAuth authentication.
let clientId = "Def123456..."
let clientSecret = "fed456..."
let scope = "spark:people_read spark:rooms_read spark:rooms_write spark:memberships_read spark:memberships_write spark:messages_read spark:messages_write"
let redirectUri = "MyCustomApplication://response"
let oauthStrategy = OAuthStrategy(clientId: clientId, clientSecret: clientSecret, scope: scope, redirectUri: redirectUri)
let spark = Spark(authenticationStrategy: oauthStrategy)
// ...
if !oauthStrategy.authorized {
oauthStrategy.authorize(parentViewController: self) { success in
if !success {
print("User not authorized")
}
}
}
- Create the Spark SDK with JWT-based authentication.
let jwtAuthStrategy = JWTAuthStrategy()
let spark = Spark(authenticationStrategy: jwtAuthStrategy)
// ...
if !jwtAuthStrategy.authorized {
// obtain JWT through some application-specific mechanism
jwtAuthStrategy.authorizedWith(jwt: myJwt)
}
- Register the device to send and receive calls.
spark.phone.register() { success in
if success {
// Successfully registered device
} else {
// Device was not registered, and no calls can be sent or received
}
}
- Use Spark service
spark.rooms.create(title: "My Room") { serviceResponse in
switch serviceResponse.result {
case .success(let room):
// Room was created
case .failure(let error):
// Room creation failed
}
}
// ...
if let roomId = room.id {
spark.memberships.create(roomId: roomId, personId: coworkerId) { serviceResponse in
// ...
}
spark.messages.post(roomId: roomId, text: "Hello friend!") { serviceResponse in
// ...
}
}
- Make an outgoing call.
let address =<EMAIL_ADDRESS>spark.phone.requestMediaAccess(Phone.MediaAccessType.audioVideo) { granted in
if granted {
// Prepare view for an outgoing call, including ensuring MediaRenderViews
// are created if making a video call
let localVideoView = MediaRenderView()
let remoteVideoView = MediaRenderView()
let mediaOption = MediaOption.audioVideo(local: localVideoView, remote: remoteVideoView)
let call = spark.phone.dial(address, option: mediaOption) { success in
if success {
// Call will be soon be ringing on the remote user's phone
} else {
// A service call may have failed, the user may have rejected the
// codec license, or the address could have been incorrect
}
}
} else {
// User denied access to use the camera or microphone
}
}
- Receive a call.
class MyCallObserver: CallObserver {
func callIncoming(_ call: Call) {
// Show incoming call view
let userAcceptedCall: Bool = // ... from user action
if userAcceptedCall {
let mediaOption = // ... set up a media option similarly to dialing
call.answer(option: mediaOption) { success in
}
} else {
// If the user chose to reject the call then reject it
call.reject() { success in
}
}
}
}


Layering of an application's codebase is a widely accepted technique to help reduce complexity and improve code reusability. To achieve this layered architecture, ASP.NET Boilerplate follows the principles of Domain Driven Design. In Domain Driven Design there are four fundamental layers:
There may be additional layers added as necessary. An example being:
These are all common layers of a domain-centric architecture. There may be minor differences based on implementation.
Overview of layers and structures are shown below:
Layers |
|
|---|---|
| Presentation | View Models (Javascript) Views (HTML/CSS) Localization |
| Web | Web API Controllers MVC Controllers |
| Application | Application Services DTOs DTO Mappers |
| Domain (Core) | Entities Value Objects Repositories Business Classes Domain Services Unit of Work Domain Events |
| Infrastructure | ORM DB Migrations |
Others |
|
| Server Side | Dependency Injection Logging |
Here is a solution with five projects for a simple layered application:
A layer can be implemented as one or more assemblies. It may be especially good to create more than one assembly for third-party dependencies (like NHibernate).
The Domain Layer is where all business rules should be implemented.
Entities represent data and operations of the business domain. Generally they are mapped to database tables in practice.
Repositories are collection-like objects and are used to retrieve and persist entities on a data source (database). The Domain Layer defines repositories, but does not implement them. They are implemented in the Infrastructure Layer.
Domain Events are used to define domain-specific events as well as to trigger and handle them. Domain services work with entities and implement business rules which do not belong within a single entity.
Unit of Work is a design pattern used to manage entities who have been affected by business logic and persist their state to a data store.
This layer should be independent of third-party libraries as much as possible.
The Application Layer contains application services that are used by the Presentation Layer. An application service method receives a DTO (Data Transfer Object) as input, uses this input to perform some specific domain layer operation, and may return another DTO, if needed. Generally, it does not receive or return entities which allows the Presentation Layer to be abstracted from the Domain Layer. An application service method is generally considered a Unit of Work. User input validation is also implemented in this layer. ASP.NET Boilerplate provides infrastructure to implement validation easily. It's suggested to use a tool for mapping entities to DTOs such as the AutoMapper library.
While the Domain Layer defines interfaces for repositories, the Infrastructure Layer implements those interfaces using ORM tools like NHibernate or EntityFramework. ASP.NET Boilerplate provides base classes to work with these two ORM frameworks. The Infrastructure Layer is used to abstract away dependencies on third-party libraries from the other layers. Database Migrations can be used here as well.
The Web Layer is implemented using ASP.NET MVC and Web API. Two different approaches can be implemented here: Single-Page Applications or Multi-Page Applications.
In a Single-Page Application (SPA) all resources are loaded once (or a core resource is loaded and others are lazy loaded when needed) to the client (browser) and then all subsequent interaction with the server is made using AJAX calls. HTML code is generated on the client-side with data received from server. The entire page is never refreshed; views are just swapped in and out as necessary. There are many Javascript SPA frameworks, such as AngularJs, DurandalJs, BackboneJs, and EmberJs. ASP.NET Boilerplate can work with any of them, but provides samples and some helper mechanisms to easily work with AngularJs and DurandalJs.
In a Multi-Page (Classic) Application (MPA), the client makes a request to the server, the server side code (ASP.NET MVC Controllers) gets data from the database, and Razor views generate HTML. These compiled pages are sent back to the client for display. Each new page results in a full page refresh.
SPA and MPA involve completely different architectures. An admin panel is a perfect candidate for a SPA. On the other hand, a blog better fits to the MPA model since it is desirable to have it crawled by search engines. Even though there are tools to help make SPAs visible to search engines, the general approach is as such for the time being.
SignalR is a perfect tool to send push-notifications from the server to the client. It can be used to provide a rich, real-time experience to the user.
There are many Javascript libraries & frameworks on the client side. jQuery is the most popular in this area with thousands of free plug-ins. There are also tools/frameworks that make it easy to work with HTML & CSS. For example, Twitter Bootstrap is a very popular HTML/CSS framework option.
ASP.NET Boilerplate provides the infrastructure to automatically create a Web API Layer from your application services and easily use it with Javascript (see documentation). Additionally, it provides the infrastructure to manage application menus, localization, and language switching. Also included is a unified Javascript API to simplify showing system messages and notifications.
ASP.NET Boilerplate automatically handles exceptions server-side and returns an appropriate response to the client.
ASP.NET Boilerplate uses and supports Dependency Injection through the Castle Windsor framework. It also uses Log4Net for logging server-side, however, easily supports swapping in other logging libraries without code change using Castle's logging facility.
ASP.NET Boilerplate leverages some of the best frameworks/libraries in addition to its own classes and systems to provide a great infrastructure on which to build web applications with an NLayer architecture. It also has templates that can be used to easily create a layered solution as a starting point for your application.


When Flappers Fluttered Through the Flames’
First published
Could one ask for your forbearance? By now it must be all too obvious that I have an insufferable passion for old movie houses. The gush you are about to receive was caused by the advent of ‘Cleopatra.’
You must understand that Melbourne was nearly the last city in the world to get ‘Cleopatra.’ We looked in craven envy when Sydney got ‘Cleopatra’ way back on December 5. Rumours seeped through to us how you had the largest hand-painted ‘Cleopatra’ poster outside Times Square in New York - a magnificent 78 feet by 26 feet. The publicity people here told us that it was all done in small squares, which raised fearful problems. When they completed it they found there was a line straight down Miss Taylor's bosom, with the result that they had to do several hundred square feet of bosom again. Now her bosom has been adjusted and tested to keep out the weather for two years.
Unfortunately, we did not get a poster of similar generous proportions, but we had an opening of the world's first Cleopatra Theatre. This opening was attended by the Governor, Sir Rohan Delacombe, and Lady Delacombe, the Lord Mayor and Lady Mayoress, Cr and Mrs Curtis. Many of us had hoped, seeing that this was the world's last grand opening, we might have had the presence of Mr Richard Burton and Miss Taylor, but we were consoled by the fact that they refused also to attend the world's first grand opening.
The lady ushers were almost dressed for the part. As you may remember, in ‘Cleopatra’ no neckline went unplunged; but the girls wore a version of the costume that Liz Taylor wore during the movie . . . A somewhat Methodist Ladies' College version. I won't bore you with a review of the film, but some of the comments from the audience were memorable: ‘I think Hoyts should have issued us all with a survival kit.’ . . . ‘Frankly, the only creature I felt sorry for was the asp.’ … and ... ‘Yes, I had to come, old man, I never miss a Roddy McDowell movie.’
But you should have seen the Cleopatra Theatre. Hoyts had just spent ₤100,000. It was dripping with gold from end to end. The carpet was burgundy and gold and the walls were covered with gold curtain, over 1700 yards of the stuff. Yes, a mile of gold curtain.
It was somewhat similar to being in a Buddhist temple in Bangkok. But you know how sometimes you lie in bed in a country hotel bedroom and study the fascinating designs on the ceiling, stamped in metal? The ceiling here was exactly the same. Heavens above, this was the old Lyceum Theatre.
Now the Lyceum originally opened as the Paramount back in 1915. In those days, to the devil with Collins Street, Bourke Street was the real entertainment area, and hard by was the Theatre Royal, the Gaiety, the Bijou; the city and 13 live theatres. But the Paramount was the picture theatre and, my word, on Saturday night you had to pay 2s. 6d. a ticket – big money in World War 1.
Later I sneaked out through the Todd-AO Buddhist curtains through a side door into the lane, and I was back with the Paramount of 1916 when Frank Thring Snr and Sir George Tallis owned all. I passed the old stables, a sign at least 60 years old, which read ‘The Bookmakers' Association of Victoria,’ and up some condemned stairs, Lo, there I found the old office and a heap of ancient posters.'
There was Gloria Swanson in ‘The Prodigal Daughters.’ The poster fell rather below the erotic appeal of Sydney's Liz poster, but Gloria's neckline was reasonably plunged and her skirt shamelessly above the knee. The copy read: ‘A party is in progress. Present are unshackled females with butterfly souls, debutantes in daring costumes, charming chorus girls, foolish flappers fluttering through flames and attended by aged cavaliers and sleek parlor snobs. See the modern jazz girl at her dizziest pace.’
Mary Pickford, ‘Everybody's Sweetheart,’ was peeling from one wall, Doris Kenyon in ‘The Last Moment’ was fading on another. They were described as ‘Paramount Super Productions.’
Then I turned back to the first day, Boxing Day, 1915, when the Paramount opened at a cost of ₤12,000 with a seating capacity of 1500 and a new innovation to Melbourne, a lounge. Mary Pickford starred in ‘Rags,’ a charming story according to the ‘Argus,’ where Miss Pickford rose from poverty to affluence and made the mistake of marrying a thief, a sottish drunkard.
The next big show was Theda Bara in ‘Carmen,’ and it was fascinating to look at the ads. In early 1916 there were no fancy blocks. There was a whole column in the ‘Argus’ headed ‘The Temple of Motion Picture Art.’ The name of Theda Bara, ‘The Most Beautiful Woman in the World,’ was repeated about 400 times down the column in 12 point black caps.
‘Carmen’ received excellent reviews and ‘Table Talk’ reported: ‘Theda Bara is a superb, sensuous, coquettish woman, who is dangerously alluring and absolutely reckless as to how she works her will.’
And frankly, after reading this, she made Elizabeth Taylor seem almost pallid. However, ‘Cleopatra,’ the latest show at the Temple of Motion Picture Art, is destined to run at least two years. However, one wonders whether they have adopted a new policy here, this idea of naming the theatre after the present show. After all, it was the Paramount in 1915, the Lyceum in 1933, the New Lyceum in 1937, and now Cleopatra.
I understand arrangements are being made for a new colossal film to be made on the entire Bible. Could this be a new name for the Cleopatra in, say, 1967?
took -out a certificate that they use for certifying dangerous patients.” It-laid down fearful methods for control to ensure that the patient was'in no circumstances to leave the hospital. This nun managed to persuade the Mother Superior to sign it and John Livingston still has that certificate at home. Indeed he is so proud of it he has had it framed. S o o ‘ _ The Livingston brothers, of course, are best known as blue water yachtsmen. They have been sailing since 1925 and no-one seems to remember exactly how many times they have won line honours in
~ the Sydney-Hobart yacht race. In April 1949 they left Melbourne in
- their fifty-six foot ketch Kurrewa to compete in the Los Angeles- Honolulu yacht race. At the time it seemed a strange thing for two
~ men .to do who could afford to ride in Rolls Royces rather than in a somewhat elderly ketch, and many of the newspaper men at the wharf wondered whether they would ever return. John Livingston handled the departure in somewhat majectic style, he strode up and down the deck playing his bagpipes. o |
-
The trip was to be made in the classic manner of the old sailing ships. They had to sail 1,500 miles due east from New Zealand, then. head north all the way to the Aleutian Islands and then across to the U.S. Coming home, they said, was easy. The had the trade winds and it was down hill all the way. They competed in the big U.S. yacht race and came sixteenth, which was good going against the armada of large and expensive American yachts. S . When they returned to Port Phillip on 13 November 1950, 150 yachts sailed out to meet them and six miles down the Bay they ~ were greeted by the Lord Mayor, the chairman of the Harbour Trust and the Commodore of the Sandringham Yacht Club. )
-
Yet perhaps the most remarkable thing the Livingstons have done was to present a twelve metre class yacht, worth at least £60,000 to Britain to compete against Sovereign for the right to challenge for’
~ the America’s Cup. At first many people could not understand.
~ They thought Australia was trying to slip in through the back door
- to steal the right to challenge from Britain. They could not believe that anyone would be generous enough to hand over a yacht like that, and demand no part whatever in the control or sailing of it.
To understand this you need to know something of the back- ground of the Livingstons. They are members of twenty-one clubs, including the Royal Yacht Squadron and the New York Yacht


Molineux sleepout raises incredible £30,000 for homeless in Wolverhampton - with VIDEO and PICTURES
A sleepout held at Molineux has raised £30,000 to help homeless people in Wolverhampton.
by Jamie BrassingtonAbout two hundred Wolves fans slept in the stands on Friday night. There were special guests amongst the crowd including former players Carl Ikeme, Karl Henry and Matt Murray, and music producer S-X.
The sleepout, which lasted from 7pm to 7am, raised money for Good Shepherd Charity and the Wolves Foundation.
WATCH the video:
Former Wolves midfielder Karl Henry tweeted: "The feeling of community spirit and togetherness last night was incredible!
"Thank you to all of the members of staff for making #MolineuxSleepout happen.
"Let’s keep raising money for @wwfcfoundation and @GSM_Wolves, who do fantastic work tackling homelessness in our city."
The cash will be split between both organisations and will go towards tackling homelessness and vulnerable housing.
Fans took to social media to share their experiences.
@_DazzlingDave tweeted: "So proud to have been apart of this with friends olds & new.
"It really makes you think about how lucky most of us are. If the money raised changes one life how amazing is that. You still have time to donate, So proud of our club and our fans #wwfc #MolineuxSleepout"
Singer @Jaki_Graham tweeted: "Over 200 of you came out for the @wwfcfoundation @GSM_Wolves #MolineuxSleepout! Well done to everyone who took part. We all got to return to the comfort & warmth of our own homes this morning. Spare a thought for those who don't have that option."
@_rachel93 tweeted: "Such a great night at the first ever #MolineuxSleepout Such a great atmosphere with wonderful people! Well done all.
"We’ve all gone home to warm houses but not everyone has that choice- please donate if you can."
To donate to the cause, visit justgiving.com/campaign/MolineuxSleepout2019


A MIDSUMMER NIGHT'S DREAM 1999 A film review by Timothy Voon Copyright 1999 Timothy Voon 3 out of 4 for love shacking in the woods
Cast: Kevin Kline, Michelle Pfeiffer, Rupert Everett, Stanley Tucci, Calista Flockhart, Anna Friel, Christian Bale, Dominic West, David Strathairn, Sophie Marceau. Screenplay: Michael Hoffman, based on the play by William Shakespeare. Producers: Leslie Urdang and Michael Hoffman. Director: Michael Hoffman.
 Don't be like the poor gentleman behind me who paid good money for a seat, probably drawn in by names like Pfeiffer and Flockhart, only to be disappointed that they are speaking in a different language. That's right. It takes a good fifteen to twenty minutes for the human brain to comprehend that this is actually English - the smarter, more poetic sort. But once the brain has rearranged several pathways of functioning, Shakespeare becomes understandable and that's when you begin to realise, what a truly great artist he was.
Problems – the setting, the costumes and the actors all seem slightly out of place neither looking Greek, or as if the names Helena, Hermia, Demetrius and Lysander truly belong to them.
Humour.  The grade six kids who were sent in by their parents, no doubt for the educational experience, ended up giggling whenever bare flesh flashed their way. Shakespeare was no doubt ahead of his time.  This says a lot about taking animals to bed. There is also implied group sex when the love quadrangle of Helena (Calista Flockhart), Hermia (Anna Friel), Lysander (Dominic West) and Demetrius (Christian Bale), all have a mud fight\bath before waking up stripped naked (by the fairies) and in each others arms. No one has a knack for sex and comedy like Shakespeare.
Of note is Michelle Pfeiffer, who is devastatingly beautiful as the fairy Queen. She has not exuded this much sensuality into a role since, ‘Lady Hawk'. Kevin Klein makes a great Ass, and Rupert Everett flaunts his male form about no doubt to entice both sexes as Oberon the fairy King (pun intended). Calista Flockhart takes her Ally McBeal into Helena. This is Shakespeare and this is a love-story born from the heart of a warm midsummer's night.
Timothy Voon e-mail<EMAIL_ADDRESS>Movie Archives http://us.imdb.com/M/reviews_by?Tim+Voon Movies In Melbourne http://www.labyrinth.net.au/~pfowler/week/movies.html
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews