| 014:024 Khan | : |
See you not how Allah sets forth a parable? - A goodly word as a goodly tree, whose root is firmly fixed, and its branches (reach) to the sky (i.e. very high). |
| 014:024 Maulana | : |
Seest thou not how Allah sets forth a parable of a good word as a good tree, whose root is firm and whose branches are high, |
| 014:024 Pickthal | : |
Seest thou not how Allah coineth a similitude: A goodly saying, as a goodly tree, its root set firm, its branches reaching into heaven, |
| 014:024 Rashad | : |
Do you not see that GOD has cited the example of the good word as a good tree whose root is firmly fixed, and its branches are high in the sky? |
| 014:024 Sarwar | : |
Consider (Muhammad) how God (in a parable) compares the blessed Word to that of a blessed tree which has firm roots and branches rising up into the sky |
| 014:024 Shakir | : |
Have you not considered how Allah sets forth a parable of a good word (being) like a good tree, whose root is firm and whose branches are in heaven, |
| 014:024 Sherali | : |
Dost thou not see how ALLAH sets forth a parable of a good word? It is like a good tree, whose root is firm and whose branches reach into heaven? |
| 014:024 Yusufali | : |
Seest thou not how Allah sets forth a parable? - A goodly word like a goodly tree, whose root is firmly fixed, and its branches (reach) to the heavens,- of its Lord. So Allah sets forth parables for men, in order that they may receive admonition. |
Concepts/Themes Covered: العمل > العمل الطالح > النجاح في العمل Action(Work)> Bad Deeds>Success at Action
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


BO.IOBoard Class
Creates an interface to the I/O board. The IOBoard object brokers the communication between your application and the physical I/O board. Currently you can only connect to a single I/O board per computer. However you could connect to multiple I/O boards if they are attached to multiple computers on your network. In that case you would create a separate IOBoard instance for each board you are connecting to in your network.
Constructor
BO.IOBoard
-
host
-
port
-
protocol
Parameters:
-
host
StringThe host address of the web server.
-
port
NumberThe port to connect to on the web server. Default = false.
-
protocol
String[optional] The websockt protocol definition (if necessary).
Item Index
Methods
- addEventListener
- analogToDigital
- begin
- checkForQueryResponse
- close
- disableAnalogPin
- disableDigitalPins
- dispatchEvent
- enableAnalogPin
- enableDigitalPins
- enablePullUp
- getAnalogPin
- getAnalogPinCount
- getDigitalPin
- getFirmwareName deprecated
- getFirmwareVersion
- getI2cPins
- getPin
- getPinCapabilities
- getPinCount
- getPins
- getProtocolVersion
- getSocket
- getValueFromTwo7bitBytes
- hasEventListener
- managePinListener
- onInitialVersionResult
- onSocketClosed
- onSocketConnection
- onSocketMessage
- parseInputMessage
- processAnalogMappingResponse
- processAnalogMessage
- processCapabilitiesResponse
- processDigitalMessage
- processInput
- processMultiByteCommand
- processPinStateResponse
- processQueryFirmwareResult
- processStatusMessage
- processSysexCommand
- processSysExString
- queryAnalogMapping
- queryCapabilities
- queryPinState
- removeEventListener
- reportCapabilities deprecated
- reportFirmware
- reportPinCapabilities
- reportVersion
- send
- sendAnalogData
- sendDigitalData
- sendDigitalPort
- sendDigitalPortReporting
- sendExtendedAnalogData
- sendOut
- sendServoAttach
- sendServoData
- sendString
- sendSysex
- setAnalogPinReporting
- setDigitalPinMode
- setDigitalPinValue
- startup
- startupInMultiClientMode
- systemReset
- toDec
Properties
Methods
addEventListener
-
type
-
listener
Parameters:
-
type
StringThe event type
-
listener
FunctionThe function to be called when the event is fired
analogToDigital
()
Number
Use this method to obtain the digital pin number equivalent for an analog pin.
Returns:
The digital pin number equivalent for the specified analog pin number.
Example:
// set analog pin A3 on an Arduino Uno to digital input
board.setDigitalPinMode(board.analogToDigital(3), Pin.DIN);
board.analogToDigital(3) returns 17 which is the digital equivalent of the analog pin
begin
()
private
Request the firmware version from the IOBoard.
checkForQueryResponse
()
private
Check if a capability response was received. If not, assume that a custom sketch was loaded to the IOBoard and fire a READY event.
close
()
private
A wrapper for the close method of the WebSocket. Making this private until a use case arises.
disableAnalogPin
-
pin
Call this method to disable analog input for the specified pin.
Parameters:
-
pin
NumberThe pin connected to the analog input
disableDigitalPins
()
Disables digital pin reporting for all digital pins.
dispatchEvent
-
type
-
optionalParams
Parameters:
-
type
EventThe Event object.
-
optionalParams
ObjectOptional parameters passed as an object. return {boolean} True if dispatch is successful, false if not.
enableAnalogPin
-
pin
Call this method to enable analog input for the specified pin.
Parameters:
-
pin
NumberThe pin connected to the analog input
enableDigitalPins
()
Enables digital pin reporting for all digital pins. You must call this before you can receive digital pin data from the IOBoard.
enablePullUp
-
pinNum
Enable the internal pull-up resistor for the specified pin number.
Parameters:
-
pinNum
NumberThe number of the input pin to enable the pull-up resistor.
getAnalogPin
()
Pin
Returns:
A reference to the Pin object (mapped to the IOBoard board analog pin).
getAnalogPinCount
()
Number
Returns:
The total number of analog pins supported by this IOBoard
getDigitalPin
()
Pin
Returns:
A reference to the Pin object (mapped to the IOBoard board digital pin).
getFirmwareName
()
String
deprecated
Returns:
The name of the firmware running on the IOBoard.
getFirmwareVersion
()
String
Returns:
The version of the firmware running on the IOBoard.
getI2cPins
()
Number
private
Returns undefined if the board does not have i2c pins.
Returns:
The pin numbers of the i2c pins if the board has i2c.
getPin
()
Pin
private
Returns:
An unmapped reference to the Pin object.
getPinCapabilities
()
Array
Returns the capabilities for each pin on the IOBoard. The array is indexed by pin number (beginning at pin 0). Each array element contains an object with a property for each modes (input, output, pwm, servo, i2c, etc) supported by the pin. The mode value is the resolution in bits.
Returns:
The capabilities of the Pins on the IOBoard.
getPinCount
()
Number
Returns:
Total number of pins
getPins
()
Pin
Returns:
An array containing all pins on the IOBoard
getProtocolVersion
()
String
Returns:
The version of Firmata protocol implemented by the firmware running on the IOBoard.
getSocket
()
WSocketWrapper
Returns:
A reference to the WebSocket
getValueFromTwo7bitBytes
-
lsb
-
msb
A utility method to assemble a single value from the 2 bytes returned from the IOBoard (since data is passed in 7 bit Bytes rather than 8 bit it must be reassembled. This is to be used as a protected method and should not be needed in any application level code.
Parameters:
-
lsb
NumberThe least-significant byte of the 2 values to be concatentated
-
msb
NumberThe most-significant byte of the 2 values to be concatenated
Returns:
The result of merging the 2 bytes
hasEventListener
-
type
Parameters:
-
type
StringThe event type return {boolean} True is listener exists for this type, false if not.
managePinListener
()
private
Ensure that event listeners are properly managed for pin objects as the pin type is changed during the execution of the program.
onInitialVersionResult
()
private
On startup, Firmata reports its version. Make sure the version is 2.3 or greater before proceeding. If the Firmata version is < 2.3 report this to the user (to do: throw appropriate error?).
onSocketClosed
()
private
Report that the websocket connection has been closed.
onSocketConnection
()
private
A websocket connection has been established.
onSocketMessage
-
event
A websocket message has been received.
Parameters:
-
event
ObjectThe message property is an array of one or more stringified bytes from the board or a config string from the server.
parseInputMessage
-
data
Determine if the incoming data is a config message or a byte.
Parameters:
-
data
StringA string representing a config message or an 8-bit unsigned integer.
processAnalogMappingResponse
()
private
Map map analog pins to board pin numbers. Need to do this because the capability query does not provide the correct order of analog pins.
processAnalogMessage
()
private
Process incoming analog data. The value is mapped from 0 - pin.analogReadResolution to a floating point value between 0.0 - 1.0.
processCapabilitiesResponse
()
private
Auto configure using capabilities response. This creates a configuration for any board in the Firmata boards.h file.
processDigitalMessage
-
port
-
bits0_6
-
bits7_13
Processing incoming digital data. Parse the port number and value to determine if any digital input data has changed. Dispatch an event if the value has changed.
Parameters:
-
port
NumberDigital data is sent per port. This does not align with the concept of a microcontroller port, but is a collection of 8 pins on the microcontroller.
-
bits0_6
NumberBits 0 - 6 of the port value.
-
bits7_13
NumberBits 7 - 13 of the port value.
processInput
-
inputData
Process input data from the IOBoard.
Parameters:
-
inputData
NumberNumber as an 8-bit unsigned integer
processMultiByteCommand
()
private
Incoming data is either multibyte or sysex. Route multibyte data to the appropriate method.
processPinStateResponse
()
private
Reads the current configuration of the requested pin. The following values are returned: 1: pin number, 2: pin type (0: DIN, 1: DOUT, 2: AIN, 3: AOUT / PWM, 4: SERVO, 5: SHIFT, 6: I2C), 3: pin state. The pin state for output modes is the value previously written to the pin. For input modes (AIN, DIN, etc) the state is typically zero (it is not the value that was written to the pin). For digital inputs the state is the status of the pullup resistor.
processQueryFirmwareResult
()
private
Construct the firmware name and version from incoming ascii data.
processStatusMessage
()
private
Process a status message from the websocket server
processSysexCommand
()
private
Route the incoming sysex data to the appropriate method.
processSysExString
()
private
Construct a String from an incoming ascii data.
queryAnalogMapping
()
private
Query which pins correspond to the analog channels
queryCapabilities
()
private
Query the cababilities and current state any board running Firmata.
queryPinState
-
pin
Reads the current state of the requested pin. Listen for the IOBoardEvent.PIN_STATE_RESPONSE event to get the response. The response contains a reference to the pin object with its state updated to match the current state of the pin on the IOBoard.
You should not typically need to call this method since the pin states are maintained client-side. Use the getAnalogPin or getDigitalPin to get the current state of a pin or getPins to get an array of all Pin objects for the IOBoard.
Cases for queryPinState are to update the pin state after a period of inactivity. For example if multiple client applications are using the same IOBoard (so multiple JavaScript apps connected to the same Arduino). When a new client connection is made, queryPinState is called automatically to copy the IOBoard pin state to the client. If for some reason you needed to copy the state of a single or multiple Pins again, you could call queryPinState in your application. In most cases however you should never need to call this method.
Parameters:
-
pin
PinThe pin object to query the pin state for.
removeEventListener
-
type
-
listener
Parameters:
-
type
StringThe event type
-
listener
FunctionThe function to be called when the event is fired
reportCapabilities
()
deprecated
reportFirmware
()
Request the name and version of the firmware (the sketch) running on the IOBoard. Listen for the IOBoard.FIRMWARE_VERSION event to be notified of when the name is returned from the IOBoard. The version number is also returned.
reportPinCapabilities
()
Call this method to print the capabilities for all pins to the console.
reportVersion
()
Request the Firmata protocol version implemented in the firmware (sketch) running on the IOBoard. Listen for the IOBoard.PROTOCOL_VERSION event to be notified of when the Firmata version is returned from the IOBoard.
send
-
message
A wrapper for the send method of the WebSocket I'm not sure there is a case for the user to call this method So I'm making this private for now.
Parameters:
-
message
NumberMessage data to be sent to the IOBoard
sendAnalogData
-
pin
Sends an analog value up to 14 bits on an analog pin number between 0 and 15. The value passed to this method should be in the range of 0.0 to 1.0. It is multiplied by the analog write (PWM) resolution set for the pin.
Parameters:
-
pin
NumberThe analog pin number. param {Number} value The value to send (0.0 to 1.0).
sendDigitalData
-
pin
-
value
Add the pin value to the appropriate digital port and send the updated digital port value.
Parameters:
-
pin
NumberThe digital pin number.
-
value
NumberThe value of the digital pin (0 or 1).
sendDigitalPort
-
portNumber
-
portData
Send the digital values for a port. Making this private for now.
Parameters:
-
portNumber
NumberThe number of the port
-
portData
NumberA byte representing the state of the 8 pins for the specified port
sendDigitalPortReporting
-
mode
Enable or disable reporting of all digital pins for the specified port.
Parameters:
-
mode
NumberEither Pin.On or Pin.OFF
sendExtendedAnalogData
-
pin
-
value
Sends an analog value > 14 bits and/or send a value for a pin number greater than 15.
Parameters:
-
pin
NumberThe analog pin number (up to 128).
-
value
NumberThe value to send (up to 16 bits).
sendOut
-
event
Called when ever a pin value is set via pin.value = someValue. Sends digital or analog output pin and output values to the IOBoard.
Parameters:
-
event
EventA reference to the event object (Pin in this case).
sendServoAttach
-
pin
-
minPulse
-
maxPulse
Call to associate a pin with a connected servo motor. See the documentation for your servo motor for the minimum and maximum pulse width. If you can't find it, then the default values should be close enough so call sendServoAttach(pin) omitting the min and max values.
Parameters:
-
pin
NumberThe pin the server is connected to.
-
minPulse
Number[optional] The minimum pulse width for the servo. Default = 544.
-
maxPulse
Number[optional] The maximum pulse width for the servo. Default = 2400.
sendServoData
-
pin
-
value
Send the servo angle.
Parameters:
-
pin
NumberThe digital pin number the servo is attached to.
-
value
NumberThe angle to rotate to (0.0 to 1.0 mapped to 0 - 180).
sendString
-
str
Send a string message to the IOBoard. This is useful if you have a custom sketch running on the IOBoard rather than StandardFirmata and want to communicate with your javascript message via string messages that you then parse in javascript. You can receive string messages as well.
To test, load the EchoString.pde example from Firmata->Examples menu in the IOBoard Application, then use sendString("your string message") to have it echoed back to your javascript application.
Parameters:
-
str
StringThe string message to send to the IOBoard
sendSysex
-
command
-
data
Send a sysEx message to the IOBoard. This is useful for sending custom sysEx data to the IOBoard, for example if you are not using StandardFirmata. You would likely use it in a class rather than calling it from your main application.
Parameters:
-
command
NumberThe sysEx command value (see firmata.org)
-
data
NumberA packet of data representing the sysEx message to be sent
setAnalogPinReporting
-
pin
-
mode
Call this method to enable or disable analog input for the specified pin.
Parameters:
-
pin
NumberThe pin connected to the analog input
-
mode
NumberPin.ON to enable input or Pin.OFF to disable input for the specified pin.
setDigitalPinMode
-
pin
-
mode
-
silent
Set the specified digital pin mode.
Parameters:
-
pin
NumberThe number of the pin. When using and analog pin as a digital pin, refer the datasheet for your board to obtain the digital pin equivalent of the analog pin number. For example on an Arduino UNO, analog pin 0 = digital pin 14.
-
mode
NumberPin.DIN, Pin.INPUT_PULLUP, Pin.DOUT, Pin.PWM, Pin.SERVO, Pin.SHIFT, or Pin.I2c
-
silent
Boolean[optional] Set to true to not send SET_PIN_MODE command. Default = false.
setDigitalPinValue
-
pin
-
value
Set the value of the specified pin
Parameters:
-
pin
NumberThe number of the digital pin.
-
value
NumberPin.HIGH or Pin.LOW
startup
()
private
The IOBoard is configured and ready to send and accept commands.
startupInMultiClientMode
()
private
Single client mode is the default mode. Checking the "Enable multi-client" box in the Breakout Server UI to enable multi-client mode.
systemReset
()
private
Resets the board to its default state without physically resetting the board.
toDec
()
private
Convert char to decimal value.
Properties
isReady
Boolean
Set to true when the IOBoard is ready. This can be used in place of listening for the IOBoardEvent.READY event when creating an app with a draw loop (such as when using processing.js or three.js);
samplingInterval
Number
Get or set the sampling interval (how often to run the main loop on the IOBoard). Normally the sampling interval should not be changed. Default = 19 (ms).
Events
analogData
BO.IOBoardEvent.ANALOG_DATA
The analogData event is dispatched when analog data is received from the IOBoard. Use thie event to be notified when any analog pin value changes. Use Pin.CHANGE to be notified when a specific pin value changes.
Event Payload:
-
target
IOBoardA reference to the IOBoard
-
pin
BO.PinA reference to the pin object.
digitalData
BO.IOBoardEvent.DIGITAL_DATA
The digitalData event is dispatched when digital data is received from the IOBoard. Use this event to be notified when any digital pin value changes. Use Pin.CHANGE to be notified when a specific pin value changes.
Event Payload:
-
target
IOBoardA reference to the IOBoard
-
pin
BO.PinA reference to the pin object.
firmwareName
BO.IOBoardEvent.FIRMWARE_NAME
deprecated
The firmwareName event is dispatched when the firmware name is received from the IOBoard.
Event Payload:
-
target
IOBoardA reference to the IOBoard
-
name
StringThe name of the firmware running on the IOBoard
-
version
NumberThe firmware version (where Firmata 2.3 = 23)
firmwareVersion
BO.IOBoardEvent.FIRMWARE_VERSION
The firmwareVersion event is dispatched when the firmware name and version is received from the IOBoard.
Event Payload:
-
target
IOBoardA reference to the IOBoard
-
version
NumberThe firmware version (where Firmata 2.3 = 23)
ioBoardConnected
BO.IOBoardEvent.CONNECTED
The ioBoardConnected event is dispatched when the websocket connection is established.
Event Payload:
-
target
IOBoardA reference to the IOBoard
ioBoardDisconnected
BO.IOBoardEvent.DISCONNECTED
The ioBoardDisconnected event is dispatched when the websocket connection is closed.
Event Payload:
-
target
IOBoardA reference to the IOBoard
ioBoardReady
BO.IOBoardEvent.READY
The ioBoardReady event is dispatched when the board is ready to send and receive commands.
Event Payload:
-
target
IOBoardA reference to the IOBoard
pinStateResponse
BO.IOBoardEvent.PIN_STATE_RESPONSE
The pinStateResponse event is dispatched when the results of a pin state query (via a call to: queryPinState()) is received.
Event Payload:
-
target
IOBoardA reference to the IOBoard
-
pin
BO.PinA reference to the pin object.
protocolVersion
BO.IOBoardEvent.PROTOCOL_VERSION
The protocolVersion event is dispatched when the Firmata protocol version is received from the IOBoard.
Event Payload:
-
target
IOBoardA reference to the IOBoard
-
version
NumberThe protocol version (where Firmata 2.3 = 23)
stringMessage
BO.IOBoardEvent.STRING_MESSAGE
The stringMessage event is dispatched when a string is received from the IOBoard.
Event Payload:
-
target
IOBoardA reference to the IOBoard
-
message
StringThe string message received from the IOBoard
sysexMessage
BO.IOBoardEvent.SYSEX_MESSAGE
The sysexMessage event is dispatched when a sysEx message is received from the IOBoard.
Event Payload:
-
target
IOBoardA reference to the IOBoard
-
message
ArrayThe sysEx data


Developer Tutorials
Description
Are you a developer? Great! You can make the most of out Parkour's functionality to create the perfect experience for your server. I've made the plugin super easy to expand and integrate into, first we will import Parkour project to begin working with it.
Importing Parkour into your Project
You will want to add Parkour's repository to the list of repositories so that you can bring in the Parkour project.
<repository>
<id>a5h73y-repo</id>
<url>https://dl.bintray.com/a5h73y/repo/</url>
</repository>
Add the following dependency to your list of dependencies and let Maven import the project.
<dependency>
<groupId>me.A5H73Y</groupId>
<artifactId>Parkour</artifactId>
<version>(INSERT LATEST VERSION)</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
Maven should now import the Parkour project and its dependencies, make sure your project builds correctly and then continue.
You can also add the Parkour.jar to your classpath if you wish for the same outcome, but Maven makes this stage considerably easier.
 In your plugin.yml enter either of the following:
depend: [Parkour]
softdepend: [Parkour]
This will allow Parkour to fully initialize before you start to use it.
Now you need to check if the Parkour plugin has started correctly within the code, this is for you to check and handle. But will look something like:
Plugin parkour = getServer().getPluginManager().getPlugin("Parkour");
if (parkour != null && parkour.isEnabled()) {
System.out.println("Found Parkour v" + parkour.getDescription().getVersion())
} else {
/* oh no, Parkour isn't installed */
}
If your Plugin successfully links with Parkour, your plugin can now interact with Parkour and listen to some of the events it fires.
Parkour Events
There are a list of Events that Parkour creates, that you can listen to:
- PlayerJoinCourseEvent
- PlayerLeaveCourseEvent
- PlayerAchieveCheckpointEvent
- PlayerDeathEvent
- PlayerFinishEvent
- PlayerParkourLevelEvent
Each of these will give you at least the Player object and the Course name for you to use. The Checkpoint and Level event will give you the relevant values also.
To listen for a Parkour event you must create a Listener class and register it correctly, then create an EventHandler like any normal event:
@EventHandler
public void onCourseCompletion(PlayerFinishCourseEvent event) {
String completedCourse = event.getCourseName();
Player player = event.getPlayer();
player.sendMessage("You completed " + completedCourse);
}
Retrieving Information
There are helper classes to help you easily find information about the plugin, these are covered under PlayerInfo and CourseInfo. These will allow you to find out the player's relevant Parkour stored information, as well as everything about the Parkour courses.
Do you feel like Parkour and its users could benefit from the changes you've made?
Create a Pull Request and I will take a look at it.


Alarm Client
The IAlarmClient is simple alarm client interface that can be used to send alarms and events to an alarm server. Upon receiving the first alarm/event, the alarm/event is queued and an http connection is established. When the connection
is up, the alarm is successfully sent via POST.
Active alarms are continuously send (in ~ 30 minutes interval) until a clear alarm is recieved.
When the connection to the alarm server is down, the alarm client tries to re-establish it (increasing reconnect timer) until the connection is up. In this case, the queued alarms/events are resent.
File information
Classes
IAlarmClient
class IAlarmClient {
public:
static IAlarmClient * Create(class IIoMux * const iomux,
class ISocketProvider * const tcpSocketProvider,
class ISocketProvider * const tlsSocketProvider,
class UAlarmClient * const user,
class IInstanceLog * const log,
char * url,
char * username,
char * pwd);
virtual ~IAlarmClient() {};
virtual void SetAlarm(dword code, AlarmSeverity severtiy, ulong64 time, const char * text, const char * details, const char * src);
virtual void ClearAlarm(dword code, AlarmSeverity severtiy, ulong64 time, const char * text, const char * details, const char * src);
virtual void SendEvent(dword code, AlarmSeverity severtiy, ulong64 time, const char * text, const char * details, const char * src);
virtual void ResetConnection(char * url, char * username, char * pwd);
virtual void Shutdown();
virtual void ChangeAlarmTimeout(unsigned int timeout);
};
Overview
This is the interface to send alarms and events to a defined alarm server.
Logging
To enable logging for IAlarmClient, the flag LOG_ALARM_CLIENT must be set in the Managers diagnostic settings.
Public Functions
Create
This static function creates the IAlarmClient instance. The returned instance must be release if no longer needed by using the C++ delete operator.
Parameters
| class IIoMux * const iomux | The IIoMux instance that IAlarmClient instance will register to. |
| class ISocketProvider * const tcpSocketProvider | A ISocketProvider instance that can create a TCP ISocket. |
| class ISocketProvider * const tlsSocketProvider | A ISocketProvider instance that can create a TLS ISocket. |
| class UAlarmClient * const user | The UAlarmClient instance that will receive the callbacks of IAlarmClient. |
| class IInstanceLog * const log | The IInstanceLog instance used for loging purposes. |
| char * url | The address of the alarm server to connect to. |
| char * username | The username to connect to the alarm server for authentication. |
| char * pwd | The password to connect to the alarm server for authentication. |
Return value
The IAlarmClient instance which should be freed as soon as it is no longer used by calling the C++ delete operator.
SetAlarm
This function sets an alarm and then sends it to the alarm server, if a connection is established. If the connection to the alarm server could not be established, the alarm is saved to be sent later.
Alarms are continuoesly sent until a clear alarm is received.
Parameters
| dword code | A unique code which identifies the alarm |
| AlarmSeverity severtiy | Defines the severity of the alarm set. |
| ulong64 time | The time at which the alarm was set (timestamp time in seconds) |
| const char * text | A string which describes the name or purpose of the alarm |
| const char * details | Additional details that might be improtant when the alarm was set. |
| const char * src | The source which set the alarm |
ClearAlarm
This function clears a previuosly set alarm. If the connection to the alarm server could not be established, the cleared alarm is saved to be sent later.
Clear alarms received are queued first before sending.
Parameters
| dword code | A unique code which identifies the alarm |
| AlarmSeverity severtiy | Defines the severity of the alarm |
| ulong64 time | The time at which the alarm was cleared (timestamp time in seconds) |
| const char * text | A string which describes the name or purpose of the alarm |
| const char * details | Additional details that might be improtant when the alarm was cleared. |
| const char * src | The source which cleared the alarm |
SendEvent
This function sends an event to the alarm server. If the connection to the alarm server could not be established, the event is saved to be sent later.
Events received are queued first before sending.
Parameters
| dword code | A unique code which identifies the event |
| AlarmSeverity severtiy | Defines the severity of the event |
| ulong64 time | The time at which the event was sent (timestamp time in seconds) |
| const char * text | A string which describes the name or purpose of the event |
| const char * details | Additional details that might be improtant to the event. |
| const char * src | The source which sent the event |
ResetConnection
Resets the connection to the alarm server, by closing the previuos connection (if any) and establishing a new one.
Parameters
| char * url | The address of the new alarm server |
| char * username | The username for authentication |
| char * password | The password for authentication |
Shutdown
Shuts down the connection to the alarm server.
Callbacks
After the connection is gracefully closed, UAlarmClient::AlarmClientShutdown() will be called.
ChangeAlarmTimeout
Changes the default timeout of the alarms. This function is used only for test purposes.
UAlarmClient
class UAlarmClient {
public:
~UAlarmClient() {}
virtual void AlarmClientShutdown(IAlarmClient * const alarmClient);
};
Overview
The UAlarmClient class is used to receive callbacks from an IAlarmClient instance. An application must subclass UAlarmClient, implement the functions that must be implemented and pass that class as user to IAlarmClient::Create().
The instance of that subclass must not be freed before the IAlarmClient instance assigned to. One UAlarmClient instance can be assigned to multiple IAlarmClient instances, because the calling IAlarmClient will be passed as parameter
to the callback functions.
Public functions
AlarmClientShutdown
Will be called, after calling IAlarmClient::Shutdown() and after the connection had been closed.
Parameters
| class IAlarmClient * const alarmClient | The calling IAlarmClient instance. |
Data types
ac_shutdown_reason
Overview
When the connection had been closed, UAlarmClient::AlarmClientShutdown() will be called with the reason for closing the connection.
Values
| AC_SHUTDOWN_NORMAL | The conenction had been closed successfully. |
| AC_HTTP_CONNECTION_ERROR | The conenction had been closed due to an http error. |
AlarmSeverity
Overview
Defines the severity of an alarm or event, which is used for SetAlarm, ClearAlarm and SendEvent functions.
Values
| ALARM_SEVERITY_INDETERMINATE |
| ALARM_SEVERITY_MAJOR |
| ALARM_SEVERITY_CRITICAL |
AlarmType
Overview
Defines internally the type of the alarm or event to be send to the alarm server.
Values
| SET_ALARM | The alarm type is set after a call to SetAlarm. |
| CLEAR_ALARM | The alarm type is set after a call to ClearAlarm. |
| ERROR_ALARM | The event type is set after a call to SendEvent. |
Code Example
IAlarmClient
void app::CreateAlarm(char * url, char * username, char * pwd)
{
this->alarmClient = IAlarmClient::Create(iomux, tcpSocketProvider, tlsSocketProvider, this, this, url_1, username_1, pwd_1);
}
void app::SetAlarm()
{
this->alarmClient->SetAlarm(FAULT_CODE_1, ALARM_SEVERITY_CRITICAL, ITime::TimeStampMilliseconds() / 1000, text, details, app_SRC));
}
void app::ClearAlarm()
{
this->alarmClient->ClearAlarm(FAULT_CODE_1, ALARM_SEVERITY_INDETERMINATE, ITime::TimeStampMilliseconds() / 1000, text, details, app_SRC);
}
void app::SendEvent()
{
this->alarmClient->SendEvent(ERROR_CODE_1, ALARM_SEVERITY_MAJOR, ITime::TimeStampMilliseconds() / 1000, text, details, app_SRC);
}
void * app::ResetConnection()
{
this->alarmClient->ResetConnection(url_2, username_2, pwd_2);
}
void app::Shutdown()
{
if (this->alarmClient) {
this->alarmClient->Shutdown();
}
}


{% extends "dashboard/base.html" %} {% block title %}miot - Manage POI{% endblock %} {% block content %}
Here is the list of your previsouly created points of interest.
No point of interest yet


Finding Inspiration In The Simple Things (July 2020 Wallpapers Edition)
The smell of rain after a hot day, watching the moon rise on a summer night’s sky, going for a swim — often it’s the simple experiences that inspire us and that we treasure most. No matter what July will have in store for you this year, our new batch of wallpapers is bound to cater for some colorful inspiration along the way.
More than nine years ago, we started out on this wallpapers adventure to bring you beautiful and inspiring wallpapers every month. It’s a community effort, made possible by artists and designers from all across the globe who challenge their creative skills and contribute their artworks to it. Just like this month.
In this post you’ll find their wallpapers for July 2020 . All of them come in versions with and without a calendar and can be downloaded for free. As a little bonus goodie, we also compiled some favorites from past July editions at the end of this post. Maybe you’ll discover one of your almost-forgotten favorites in there, too? A huge thank-you to everyone who shared their artworks with us this month — we sincerely appreciate it! Happy July!
- All images can be clicked on and lead to the preview of the wallpaper,
- We respect and carefully consider the ideas and motivation behind each and every artist’s work. This is why we give all artists the full freedom to explore their creativity and express emotions and experience through their works. This is also why the themes of the wallpapers weren’t anyhow influenced by us but rather designed from scratch by the artists themselves.
Submit your wallpaper
Did you know that you could get featured in one of our upcoming wallpapers posts, too? We are always looking for creative talent , so if you have an idea for a wallpaper for August, please don’t hesitate to submit it. We’d love to see what you’ll come up with. Join in! →
Birdie July
Designed by Lívi Lénárt from Hungary.
- preview
- with calendar: 800x600 , 1024x1024 , 1152x864 , 1280x960 , 1280x1024 , 1600x1200 , 1920x1080 , 2560x1440
- without calendar: 800x600 , 1024x1024 , 1152x864 , 1280x960 , 1280x1024 , 1600x1200 , 1920x1080 , 2560x1440
Strive For Progress, Not Perfection
“I created this wallpaper as a daily reminder that it’s better to take one small step towards my goal every day than to do nothing at all out of fear that it won’t be perfect. I hope you enjoy it and it helps you keep motivated every day!” — Designed by Andrew from the United States.
- preview
- with calendar: 320x480 , 1024x1024 , 1280x720 , 1680x1200 , 1920x1080 , 2560x1440
- without calendar: 320x480 , 1024x1024 , 1280x720 , 1680x1200 , 1920x1080 , 2560x1440
Plastic Whale
“The growing amount of plastic pollution in our rivers, seas, and oceans can have a devastating effect on marine wildlife both large and small. Plastic bags are known to stay in the oceans for about 450 years before beginning to degrade. I was inspired by illustrator Kerby Rosanes’ ‘geometric beasts’ series and created my own version to convey this message.” — Designed by Aysha Samrin from Vancouver.
- preview
- with calendar: 1440x900 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
- without calendar: 1440x900 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
It’s Getting Hot
Designed by Ricardo Gimenes from Sweden.
- preview
- with calendar: 320x480 , 640x480 , 800x480 , 800x600 , 1024x768 , 1024x1024 , 1152x864 , 1280x720 , 1280x800 , 1280x960 , 1280x1024 , 1366x768 , 1400x1050 , 1440x900 , 1600x1200 , 1680x1050 , 1680x1200 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
- without calendar: 320x480 , 640x480 , 800x480 , 800x600 , 1024x768 , 1024x1024 , 1152x864 , 1280x720 , 1280x800 , 1280x960 , 1280x1024 , 1366x768 , 1400x1050 , 1440x900 , 1600x1200 , 1680x1050 , 1680x1200 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
Happy Birthday, Harrison Ford!
“This month, we’re paying tribute to the legendary actor Harrison Ford, who turns 78 on July 13th! A woodworker and an aspiring actor, during the 70s Ford did carpentry works in the homes of some of the leading film directors and producers, thus crossing paths with Star Wars director George Lucas. It proved to be a defining moment that would shape not only Ford’s life but cinematography in general. Ford portrayed Han Solo in several of the franchise’s installments, leaving an indelible mark through his friendship with Chewbacca and love with princess Leia. After more than five decades of a successful and immaculate career, award-winning and acclaimed roles, and a life away from the public eye, Harrison Ford remains one of the best, most versatile, and prolific actors of our era, relishing his two favorite hobbies - flying and carpentry - as well as impressing us with each new movie to come.” — Designed by PopArt Studio from Serbia.
- preview
- with calendar: 320x480 , 640x480 , 800x480 , 800x600 , 1024x768 , 1024x1024 , 1152x864 , 1280x720 , 1280x800 , 1280x960 , 1280x1024 , 1366x768 , 1400x1050 , 1440x900 , 1600x1200 , 1680x1050 , 1680x1200 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
- without calendar: 320x480 , 640x480 , 800x480 , 800x600 , 1024x768 , 1024x1024 , 1152x864 , 1280x720 , 1280x800 , 1280x960 , 1280x1024 , 1366x768 , 1400x1050 , 1440x900 , 1600x1200 , 1680x1050 , 1680x1200 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
Majestic Moon
“A few weeks ago, I drove the street at night and saw the moon just dipping the horizon. It appeared to be bigger than usual and it was so majestic. It was a really amazing moment that inspired me to create this wallpaper. Keep your mind and eyes open. Enjoy nature whenever you can!” — Designed by Kai Böker from Germany.
- preview
- with calendar: 640x480 , 800x480 , 800x600 , 1024x768 , 1024x1024 , 1152x864 , 1280x720 , 1280x800 , 1280x960 , 1280x1024 , 1366x768 , 1400x1050 , 1440x900 , 1600x1200 , 1680x1050 , 1680x1200 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
- without calendar: 640x480 , 800x480 , 800x600 , 1024x768 , 1024x1024 , 1152x864 , 1280x720 , 1280x800 , 1280x960 , 1280x1024 , 1366x768 , 1400x1050 , 1440x900 , 1600x1200 , 1680x1050 , 1680x1200 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
Happy International Kissing Day
“Celebrating kissing day in a Corona period requires attention. #staysafe” — Designed by Nathalie Lansbergen from the Netherlands.
- preview
- with calendar: 800x480 , 800x600 , 1024x768 , 1024x1024 , 1280x800 , 1280x960 , 1280x1024 , 1366x768 , 1400x1050 , 1440x900 , 1600x1200 , 1680x1050 , 1680x1200 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
- without calendar: 800x480 , 800x600 , 1024x768 , 1024x1024 , 1280x800 , 1280x960 , 1280x1024 , 1366x768 , 1400x1050 , 1440x900 , 1600x1200 , 1680x1050 , 1680x1200 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
Bloom Where You Are Planted
“I was thrilled to catch this perfect moment of my blooming sunflower.” — Designed by Monica Barron from New Jersey.
- preview
- with calendar: 1080x1920 , 1280x1024 , 1400x1050 , 1536x2048 , 1600x1200 , 1680x1200 , 1920x1080 , 1920x1200 , 2560x1440
- without calendar: 1080x1920 , 1280x1024 , 1400x1050 , 1536x2048 , 1600x1200 , 1680x1200 , 1920x1080 , 1920x1200 , 2560x1440
Global Day Of Parents
“This is the day in which people all over the world get the chance to say thank you to their parents (and parental figures) for the often thankless tasks they undertake for their kids. It’s a day to say ‘Thank you, I know I put you through a lot but I do appreciate it!’.” — Designed by Ever Increasing Circles from the United Kingdom.
- preview
- with calendar: 320x480 , 640x480 , 800x480 , 800x600 , 1024x768 , 1024x1024 , 1152x864 , 1280x720 , 1280x800 , 1280x960 , 1280x1024 , 1366x768 , 1400x1050 , 1440x900 , 1600x1200 , 1680x1050 , 1680x1200 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
- without calendar: 320x480 , 640x480 , 800x480 , 800x600 , 1024x768 , 1024x1024 , 1152x864 , 1280x720 , 1280x800 , 1280x960 , 1280x1024 , 1366x768 , 1400x1050 , 1440x900 , 1600x1200 , 1680x1050 , 1680x1200 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
Oldies But Goodies
Our wallpapers archives are full of timeless treasures that are just too good to be forgotten. So here’s a small selection of favorites from past July editions . Enjoy! (Please note that these designs don’t come with a calendar.)
Hello, Strawberry Sundae!
“Is there anything more refreshing (and more delicious!) than a strawberry sundae on a hot summer day? Well, we don’t think so. And did you know that strawberry celebration is on its way in the U.S. Oh, yes! July 7th is the National Strawberry Sundae Day, and we predict that it’s going to be sweet and yummy. So, make your favorite dessert and start preparing yourself for the festive July days.” — Designed by PopArt Studio from Serbia.
- preview
- without calendar: 320x480 , 640x480 , 800x480 , 800x600 , 1024x768 , 1152x864 , 1280x720 , 1280x800 , 1280x960 , 1280x1024 , 1366x768 , 1400x1050 , 1440x900 , 1600x1200 , 1680x1050 , 1680x1200 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
Floral Thing
“The wallpaper which I created consists of my personal sketches of Polish herbs and flowers. I wanted it to be light and simple with a hint of romantic feeling. I hope you’ll enjoy it!” — Designed by Beata Kurek from Poland.
Keep Moving Forward
“Snails can be inspiring! If you keep heading towards your goal, even if it is just tiny steps, enjoy the journey and hopefully it will be worth the effort.” — Designed by Glynnis Owen from Australia.
- preview
- without calendar: 320x480 , 640x480 , 800x600 , 1024x768 , 1152x864 , 1280x720 , 1280x960 , 1600x1200 , 1920x1080 , 1920x1440 , 2560x1440
Alentejo Plain
“Based in the Alentejo region, in the south of Portugal, where there are large plains used for growing wheat. It thus represents the extensions of the fields of cultivation and their simplicity. Contrast of the plain with the few trees in the fields. Storks that at this time of year predominate in this region, being part of the Alentejo landscape and mentioned in the singing of Alentejo.” — Designed by José Guerra from Portugal.
July Rocks!
Designed by Joana Moreira from Portugal.
Riding In The Drizzle
“Rain has come, showering the existence with new seeds of life. Everywhere life is blooming, as if they were asleep and the falling music of raindrops have awakened them. Feel the drops of rain. Feel this beautiful mystery of life. Listen to its music, melt into it.” — Designed by DMS Software from India.
- preview
- without calendar: 320x480 , 640x480 , 800x480 , 800x600 , 1024x768 , 1024x1024 , 1152x864 , 1280x720 , 1280x800 , 1280x960 , 1280x1024 , 1366x768 , 1400x1050 , 1440x900 , 1600x1200 , 1680x1050 , 1680x1200 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
Save The Tigers
“Global Tiger Day, often called International Tiger Day, is an annual celebration to raise awareness for tiger conservation, held annually on July 29. It was created in 2010 at the Saint Petersburg Tiger Summit. The goal of the day is to promote a global system for protecting the natural habitats of tigers and to raise public awareness and support for tiger conservation issues.” — Designed by Athulya from Calicut.
- preview
- without calendar: 320x480 , 640x480 , 800x480 , 800x600 , 1024x768 , 1024x1024 , 1152x864 , 1280x720 , 1280x800 , 1280x960 , 1280x1024 , 1366x768 , 1400x1050 , 1440x900 , 1600x1200 , 1680x1050 , 1680x1200 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
Cactus Hug
Designed by Ilaria Bagnasco from Italy.
- preview
- without calendar: 320x480 , 800x600 , 1024x1024 , 1280x800 , 1280x1024 , 1366x768 , 1440x900 , 1600x1200 , 1680x1050 , 1920x1080 , 1920x1200 , 2560x1440 , 2560x1600
Heated Mountains
“Warm summer weather inspired the color palette.” — Designed by Marijana Pivac from Croatia.
- preview
- without calendar: 320x480 , 640x480 , 800x480 , 800x600 , 1024x768 , 1024x1024 , 1152x864 , 1280x720 , 1280x800 , 1280x960 , 1280x1024 , 1366x768 , 1400x1050 , 1440x900 , 1600x1200 , 1680x1050 , 1680x1200 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440
Summer Cannonball
“Summer is coming in the northern hemisphere and what better way to enjoy it than with watermelons and cannonballs.” — Designed by Maria Keller from Mexico.
- preview
- without calendar: 320x480 , 640x480 , 640x1136 , 750x1334 , 800x480 , 800x600 , 1024x768 , 1024x1024 , 1152x864 , 1242x2208 , 1280x720 , 1280x800 , 1280x960 , 1280x1024 , 1366x768 , 1400x1050 , 1440x900 , 1600x1200 , 1680x1050 , 1680x1200 , 1920x1080 , 1920x1200 , 1920x1440 , 2560x1440 , 2880x1800


Job title:
Description:
Start Date:
End date:
Company details:
Company name:
City:
Contact person:
Recruiter name:
Recruiter surname: :
Contact email:
Logo:


Be true to yourself and your way of life. Do what you have to do to support and be there for your friends and loved ones. Push through your struggles to live your life in strength. We believe in supporting small local businesses and protecting the coast to maintain its beauty and historic significance.
Feel free to email and/or follow us!
We invite you to post some pictures with you, your friends & family living the Cruiser Lifestyle via Twitter, Instagram & Facebook!!
Use our hashtag and join the faimly!
#cruiserlifestyle!


－－Language－－
en
zh_TW (繁體中文 待開發)
Typing Game
0.3
Introduction
Typing Game
typing dropdown
Introduction to game
typing article
Typing Article: Introduction to game
Hierarchy
API - RELATION
Sphinx
Disqus
Release note
Release Note
Typing Game
Docs
»
Typing-Game: Documentation
Edit on GitHub
Typing-Game: Documentation
¶
Article
¶
Introduction
¶
Introduction
Typing Game
Install
USAGE
DEMO
Contributing
More
Game
¶
typing dropdown
Introduction to game
typing article
Typing Article: Introduction to game
MOTIVATION
Hierarchy
API - RELATION
Program processing
Sphinx
¶
Sphinx
Disqus
OTHER REFERENCE
History
¶
Release note
Release Note
0.3.1
0.3.0
0.2.1
0.2.0
0.1.0
0.0.0
Statistic
¶
Counts of the Disqus.
REFERENCE
¶
Footnotes
¶
Citations
¶
Please enable JavaScript to view the
comments powered by Disqus.


Olympic
BA
What about a skateboard?
This ain't
This is
a ship


Contact
Resume
About
Portfolio
Home
Hi, I'm Nishah!
User Experience Designer and Researcher keen on the psychology of Interaction Design.
Based in Singapore, seeking for career opportunities.
Check out my work


{% macro testimonials() %}
{% set testimonialsdata = [
{
"desc": "The main issues of SMEs are Transaction Recording, Financial Recording and How to Marketing Features in Digital Prizm is very complete starting from Recording Data, Managing Business Processes and Generating Financial Statements Financial Statements are Means of Knowing the Development of our business.
"customer_img": "/assets/punia_website/images/testimonials/alec.jpg",
"customer_name": "Afif Ridwan
bandengrorod.punia.online
Bekasi"
},
{
"desc": "A very helpful application when recording data, and controlling the SME business process The feature is very Complete and represents what SMEs need The Website Shop Online feature is what I really like, so easy and well controlled.",
"customer_img": "/assets/punia_website/images/testimonials/sonal.jpg",
"customer_name": "Shelly
salaku.punia.online
Bekasi"
},
{
"desc": "We need a system to control the business processes of our Business, we also need an online store website to market our Products.All there when we use Digital Prizm Our business is ready to go Go Modern class, Go Digital and Go Online"
"customer_img": "/assets/punia_website/images/testimonials/hqdefault.jpg",
"customer_name": "Tety Wartika
cemilanmakutet.punia.online
Tasikmalaya"
},
{
"desc": "Our Shopping Center Business is getting well controlled since we use punia.online Controlling stock can be done in real time We also use POS (Cash Register) available in Digital Prizm so we can sell OFFLINE and ONLINE We are ready to ride Class thanks to Digital Prizm support ",
"customer_img": "/assets/punia_website/images/testimonials/zel-ortiz.png",
"customer_name": "Ratnaningsih
olbek.punia.online
Bekasi"
}
]%}
{%- for testimonial in testimonialsdata -%}
{{ testimonial.desc }}
{{ testimonial.customer_name }}


I think we need to buy cups for the party.
That's a great idea! I don't have any.
Item1
Item2
Item3
Item4
Item5
Item6


Last night I dreamed of Sir Maurice Bowra (1898—1971). When I awoke, this morning, I had to look him up to find out who he was. When I went to sleep last night, his was a name I knew, that I had come across here and there over the years, but I could not have said I knew anything about him.
I learn, today, among other things, that he wrote : “I expect to pass through this world but once and therefore if there is anybody that I want to kick in the crutch I had better kick them in the crutch now, for I do not expect to pass this way again.”
In my dream Bowra was hanging about on the street wit a man named Henderson and a third party whose name was not divulged. Bowra had lank sandy hair and looked not unlike the actor David Warner. But in reality, he was “built like a sandbag, … short and square with no neck and possessed a huge bittern booming voice”. This is what he really looked like.


| « CQ/XML Admin Docs | Adding a Permissions Entry | Updated: |
|---|
cqxmlusr
/opt/cqxmlintf/data/recmod.xml
<IpRecMod> <login1> <defect> <product>Product A</product> </defect> </login1> <login2> <defect> <product.division>Division A</product.division> </defect> </login2> <ip<IP_ADDRESS>> <defect> <product>Product A</product> <product>Product B</product> <product>Product C</product> <component>Component D1</component> <component>Component D2</component> <id>defect01230000</id> </defect> </ip<IP_ADDRESS>> </IpRecMod>Notice that the XML document, like the encryption keys file, accepts both ip addresses and ClearQuest logins. However, unlike the encryption keys file, the file is not divided into sections.
Modification permissions can be granted to any user or ip address for any record based on the values of fields on those records. For example, you can allow a user to modify defect records based on the product field or allow an ip address to only modify defects in a certain state.
You can extend this functionality by using the ClearQuest reference dot-notation. Notice in the example file listed above that login2
is allowed to update defect
records based on the defect's product's division.
The basic format for the record modification file is as follows:
<IpRecMod> <[login]> <[record type]> <[test field1]>[field value]</[test field1]> <[test field2]>[field value]</[test field2]> </[record type]> </[login]> <ip[address]> <[record type]> <[test field]>[field value]</[test field]> </[record type]> </ip[address]> </IpRecMod>
Notice that the actual ip address used as the element name is preceeded with the string 'ip
'. Failure to adhere to this convention will create invalid XML elements. (XML elements must start with a letter or underscore.) Invalid XML in the record modification file causes the XML parser to go into deep recursion whenever it tries to read the file. The CQ/XML Interface tries to read the file when it changes. In other words, the CQ/XML Interface will crash the first time somebody sends a request.
When determining if a user or ip has permissions to modify a particular file, the ClearQuest XML Interface will check the current record against each permissions entry for that user or ip until it finds a match or runs out of tests. This is significant because it means the login in the record modification file is OR
'd and not AND
'd.


git clone https://github.com/aws-samples/devsecops-workshop-on-aws
cd devsecops-workshop-on-aws
cloneUrlHttp URL
in the response from the CLI.aws codecommit create-repository --repository-name wordpress-cfn --repository-description "This template installs WordPress with a local MySQL database for storage"
pip install git-remote-codecommit
git init && git remote add AWSCodeCommit codecommit::eu-west-1://wordpress-cfn
git clone https://github.com/awslabs/git-secrets.git
cd git-secrets && make install && cd ..
git secrets --install
git secrets --register-aws
git push AWSCodeCommit master
git-secrets scans commits, commit messages, and –no-ff merges to prevent adding secrets into your git repositories.


C++ Project Template
I use C++ regularly and decided to make a template project repository to learn new skills for software projects. The newest tool I learned for this was CMake. It is a collection of tools to ease cross-platform compilation. It is used extensively in the industry and is a good tool to understand how to use.
I also wrote Python scripts to help perform automated tasks in development. Including a version file generator that grabs the latests git tag and bases the software version off that. Another tool executes clang-format and clang-tidy on every changed file for integration in a pre-commit git hook. The last main tool is a script to generate a documentation website using Doxygen whenever a release configuration is built, it also prevents the documentation from being generated from any other branch than master. This help the master branch and documentation branch be up to date with each other.
tags: C++, CMake, cross-platform, Python, software


My CPMpy page
CPMPy is a high-level constraint modelling language, with solver support for OR-tools CP-SAT and PySAT. Arrays are NumPy arrays so one can use NumPy's operations to create succinct models.
See github.com/tias/cppy for more info about CPMpy.
Documentation: CPMpy: Constraint Programming and Modeling in Python. See Tias Guns' ModRef19 paper Increasing modeling language convenience with a universal n-dimensional array, CPpy as python-embeded example (PDF) for some background about the project.
cpmpy is available via pip.
My CPMPy Models
All these models are also available (or will be available soon) at my GitHub repo: github.com/hakank/hakank/tree/master/cpmpy.
Note: All models imports the utilities package cpmpy_hakank.py which defines the following constraints/utilities:
-
all_different_except_0(a)
-
to_num(a,n,base)
-
increasing(a)
-
increasing_strict(a)
-
decreasing(a)
-
decreasing_strict(a)
-
all_pairs(a)
-
get_different_solution(model,a)
-
flatten_lists(a)
-
ORT_simple_printer(ort.CpSolverSolutionCallback)
: Callback for printing single arrays
-
ORT_arrays_printer
-
ORT_simple_printer_matrix
-
ORT_simple_function_printer
-
ORT_function_printer_arrays
-
print_solution(a)
-
ortools_wrapper(model,var_array,print_solution,num_sols)
-
ortools_wrapper2(model,var_array,print_solution,num_sols)
(no solution count)
-
ortools_wrapper_opt(model,var_array,print_solution,num_sols)
-
base_array(n)
-
scalar_product(a,b)
-
scalar_product1(a)
-
my_circuit(x)
-
my_circuit_path(x,z)
-
count(a,val,c)
-
atmost(a,val,c)
-
atleast(a,val,c)
-
exactly(a,val,c)
-
global_cardinality_count(a,gcc)
-
inverse(x,y)
-
my_cumulative(s, d, r, b)
-
member_of(x, val)
-
regular(x, Q, S, d, q0, F)
-
regular_table(x, Q, S, d, q0, F)
-
lex_less(x,y)
-
lex2(x)
-
lex_greater(x,y)
-
knapsack(values, weights, n)
-
my_abs(x,y,d)
-
my_abs2(x,y)
-
prod(x,res)
-
prod1(x)
-
among(m,x,v)
-
frenicle(x,n)
-
distribute(card, value, base)
-
fill_array(x,x_val)
-
all_different_pairs(a, s)
-
increasing_pairs(a, s)
-
decreasing_pairs(a, s)
-
pairs(a, s)
-
all_min_dist(min_dist, x, n)
-
all_different_on_intersection(x, y)
-
count_a_in_b(ass,bss)
-
all_different_modulo(x, m)
-
all_different_cst(xs, cst)
-
all_different_cst(xs, cst)
-
arith(x, relop, val)
-
arith_relop(a, t, b)
-
diffn(x,y,dx,dy)
-
nvalue(m,x)
-
nvalues(x,op,n)
-
clique(graph,x, card)
-
assignment_model(cost, tasks=None,people=None,print_solution=None,opt="min")
-
latin_square(x)
-
reverse(xfrom,xto)
-
print_model_and_variables(model)
-
argmin(x,p)
-
argmax(x,p)
-
argmin_except_c(x,p,c)
-
argmin_except_0(x,p)
-
argmax_except_c(x,p,c)
-
permutation3(x,p,y)
-
permutation(x,y)
-
get_min_max_domain(x)
-
chain(op,x)
-
minimum_except_c(x,min_val,c,allow_all_c=False)
-
minimum_except_0(x,min_val,allow_all_0s=False)
-
value_precede(s,t,x)
-
value_precede_chain(c,x)
-
sliding_sum(c,x)
-
no_overlap(s1,d1,s2,d2)
-
is_prime(n)
-
primes(limit)
-
all_different_reif(x,b)
-
all_different_reif_m(model,x)
(returns b
)
-
lex_chain_less(x)
-
soft_alldifferent(x,p)
-
among_seq(low,high,seqlen,x)
-
among_range(low,high,x,v)
-
sequence(x,seq_length,lbound,ubound)
-
sort_array(x,y)
-
all_different_consecutive_values(x)
-
all_different_explain(x,d)
Here are the cpmpy models:
- 3_coins.py: 3 coins problem
- 3_jugs_regular.py: 3 jugs problem using
regular
constraint.
- 3sum.py: 3SUM problem
- 12_pack_problem.py: 12 pack problem
- 17b.py: 17x17 Challenge.
- 18_hole_golf.py: 18 Hole golf
- 50_puzzle.py: 50 puzzle (Sam Loyd)
- 5x5_puzzle.py: 5x5 puzzle
- 2012_CMO_problem.py: 2012 problem (from 2012 CMO)
- a_puzzle.py: "A Puzzle", 8809=6,... (from God Plays Dice "A Puzzle"
- a_round_of_golf.py: A round of golf problem (Dell Logic Puzzles)
- abbots_puzzle.py: Abbot's puzzle (Dudeney)
- added_corner.py: Added cordner puzzle
- age_changing.py: Age changing puzzle (Enigma 1224)
- ages_of_the_sons.py: Ages of the sons puzzle
- all_differ_from_at_least_k_pos: Test of global constraint
all_differ_from_at_least_k_pos
- all_different_cst.py: Test of global constraint
all_different_cst
- all_different_consecutive_values.py: Test of global constraint
all_different_consecutive_values
- all_different_reif.py: Test of global constraint
all_different_reif
and all_different_reif_m
(reified version of the all_different
constraint)
- alldifferent_except_0.py: Test of global constraint
all_different_except_0
- all_different_explain.py: Test of global constraint
all_different_explain
- all_different_modulo.py: Test of global constraint
all_different_modulo
- all_different_on_intersection.py: Test of global constraint
all_different_on_intersection
- all_different_pairs.py: Test of global constraint
all_different_pairs
- all_interval.py: All interval problem (CSPLib problem #7)
- all_min_dist.py: Test of global constraint
all_min_dist
- all_partitions.py: All integer partitions
- allergy.py: Allergy logic puzzle
- alphametic.py: General alphametic solver (i.e. problems like "SEND+MORE=MONEY")
- among.py: Test of global constraint
among
- among_seq.py: Test of global constraint
among_seq
- appointment_scheduling.py: Appointment scheduling (matrix and 'set' approach)
- arith.py: Test of global constraint
arith
- archery_puzzle.py: Archery puzzle
- argmax_test.py: Test of global constraints
argmax,argmin,argmin_except_0,argmax_except_c
- assignment.py: Some simple assignment problems, using the fairly general
assignment_model
- arch_friends.py: Arch friends puzzle
- atmost_test.py: Tests of global constraints
atmost
, atleast
, and exactly
- autoref.py: Autoref problem
- averbach_1_2.py: Circular table problem (Averbach, Chein)
- babysitting.py: Babysitting puzzle
- balancing_brackets.py: Balancing brackets
- bales_of_hay.py: Bales of Hay problem
- bananas.py: Bananas puzzle
- best_host.py: Best host problem
- bibd.py: Balanced Incomplete Block Design (BIBD)
- big_bang2.py: Big bang problem
- bin_packing.py: Bin packing problem
- bin_packing_laurent.py: Bin packing problem (port of a model by Laurent Perron)
- birthday_coins.py: Birthday coins puzzle
- book_buy.py: Book buy puzzle
- bowls_and_oranges.py: Bowls and Oranges problem
- breaking_news.py: Breaking news puzzle
- broken_weights.py: Broken weights puzzle
- building_a_house.py: Building a house (scheduling problem)
- building_blocks.py: Building blocks puzzle
- bus_schedule.py: Bus scheduling
- bus_scheduling_csplib.py: Bus driver scheduling problem (prob022 in CSPLib)
Problem instances:
- cabling.py: Cabling problem
- calculs_d_enfer.py: Calculs d'enfer puzzle
- calvin_puzzle.py: Calvin puzzle
- candies.py: Candies problem
- capital_budget.py: Capital budget (Winston)
- car.py: Car sequencing (from Pascal Van Hentenryck "OPL Optimization Programming Language", page 184ff)
- chain_test.py: Test of global constraint
chain
- chess_set.py: Chess set (simple) optimization problem
- circling_squares.py: Circling squares problem
- circuit.py: Decomposition of global constraint
circuit
- circuit_path.py: Decomposition of global constraint
circuit_path
- clique.py: Test of global constraint
clique
- clock_triplets.py: Clock triplets
- coins3.py: Minimum mumber of coins that allows one to pay exactly any amount smaller than one Euro (from the ECLiPSe book)
- coins_grid.py: Tony Hurlimann's coin grid problem
- combinatorial_auction.py: Combinatorial auction
- combinatorial_auction2.py: Combinatorial auction
- consecutive_integer_partition_problem.py: Consecutive integer partition problem (Kitzawa)
- contiguity_regular.py: Decomposition of global constraint
global contiguity
(using regular
constraint)
- contracting_costs.py: Contracting costs (Sam Loyd)
- costas_array.py: Costas array problem
- covering_opl.py: Set covering (OPL)
- crew.py: Crew allocation problem
- crossfigure.py: Crossfigure
- crossword2.py: Simple crossword problem
- crypta.py: Crypta, alphametic problem (standard Prolog benchmark)
- crypto.py: Crypto, alphametic problem (standard Prolog benchmark)
- cur_num.py: Curious numbers problem (Dudeney)
- cumulative_tests.py: Some tests of the
my_cumulative
constraint
- curious_set_of_integers.py: Curious set of integers (Martin Gardner)
- debruijn.py: "Classical" and "arbitrary" de Bruijn sequences
- devils_word.py: Devil's word problem
- diet1.py: Simple diet problem (optimization of a diet).
- diamond_free_degree_sequences.py: Diamond-free Degree Sequences
- diffn_test.py: Test of global constraint
diffn
- dinner.py: Dinner problem
- discrete_tomography.py: Discrete tomography
Data files:
- distribute.py: Test of global constraint
distribute
- divisible_by_1_through_9.py: Divisible by 1 through 9 puzzle
- divisible_by_9_to_1.py: Divisible by 9 to 1 puzzle
- domino.py: Domino problem
- donald_gerald_robert.py: DONALD+GERALD=ROBERT puzzle
- drive_ya_nuts.py: Drive Ya Nuts puzzle
- dudeney_numbers.py: Dudeney numbers
- einstein_opl.py: Einstein puzzle (OPL)
- einav_puzzle.py: Einav puzzle
- eq10.py: Eq 10, standard benchmark problem
- eq20.py: Eq 20, standard benchmark problem
- equal_sized_groups.py: Equal sized groups
- euler1.py: Project Euler problem #1
- euler2.py: Project Euler problem #2
- euler9.py: Project Euler problem #9
- euler31.py: Project Euler problem #31
- exodus.py: Exodus puzzle
- facility_location_problem.py: Facility location problem
- fancy.py: Mr Greenguest puzzle (a.k.a Fancy dress problem)
- fill_a_pix.py: Fill-a-pix problem.
Data files:
- fill_in_the_square.py: Fill in the squares (Brainjammer)
- finding_celebrities.py: Finding celebrities problem
- five_brigands.py: Five brigands puzzle
- five_floors.py: Five floors puzzle
- five_statements.py: Five statements puzzle
- fixed_charge.py: Fixed charge problem
- flow_free_game.py: Flow Free game
- football.py: Football optimization
- four_islands.py: Four islands puzzle
- four_numbers.py: Four numbers
- fractions_model.py: Fractions puzzle
- frog_circle.py: Frog circle puzzle
- furniture_moving.py: Optimizing furniture moving (Marriott and Stuckey). Contains an experimental decomposition of the global constraint
my_cumulative
- futoshiki.py: Futoshiki puzzle (grid puzzle)
- general_store.py: General store puzzle
- generating_numbers2.py: Permutation set problem.
- giant_cat_army_riddle.py: Giant Cat Army riddle
- global_contiguity.py: Global contiguity constraint using
regular
constraint
- golomb_ruler.py: Golomb ruler
- grocery.py: Grocery problem
- hamming_distance.py: Hamming distance
- handshaking.py: Halmos' handshake problem
- hanging_weights.py: Hanging weights problem
- heterosquare.py: Heterosquare
- hidato.py: Hidato puzzle
- hidato_table.py: Hidato puzzle using global constraint
Table
- huey_dewey_louie.py: Huey, Dewey, and Louie logical puzzle.
- initials_queue_problem.py: Initial queues problem (Chris Smith)
- inverse_test.py: Test of global constraint
inverse
- isbn.py: Some excursion of ISBN13
- jobs_puzzle.py: Jobs puzzle
- just_forgotten.py: Just forgotten puzzle (Enigma 1517)
- k4p2_graceful_graph.py: K4 P2 Graceful graph
- k4p2_graceful_graph2.py: K4 P2 Graceful graph (alternative model)
- kakuro.py: Kakuro puzzle
- kenken2.py: KenKen puzzle
- killer_sudoku.py: Killer Sudoku puzzle
- knapsack.py: Knapsack problem
- knapsack_investments.py: Knapsack investments problem
- knapsack_rosetta_code_01.py: Knapsack problem, 0/1 version (Rosetta code)
- knapsack_rosetta_code_bounded.py: Knapsack problem, bounded version (Rosetta code)
- knights_path.py: Knights path
- knights_tour_circuit.py: Knights tour using the
circuit
constraint
- labeled_dice.py: Labeled dice problem, from Jim Orlin's Colored letters, labeled dice: a logic puzzle (follow up: Update on Logic Puzzle)
- langford.py: Langford's number problem (CSPlib problem 24)
- latin_square_card_puzzle.py: Latin square card puzzle (Greaco-Latin squares)
- least_diff.py: Least Diff problem (alphametic problem)
- lecture_series.py: Lecture series problem
- lectures.py: Lectures, schedule problem from Biggs "Discrete Mathematics"
- lex_test.py: Test of global constraint
lex_less
- liechtenstein_coloring.py: Liechtensteing coloring problem
- linear_combinations.py: Linear combinations. Restoring arrays of numbers from the differences. See Recover_origin_of_pair_differences.pdf (PDF) for more information about this.
- magic_hegagon.py: Magic hexagon
- magic_sequence.py: Magic sequence
- magic_square.py: Magic square problem
- magic_square_water_retention.py: Magic square water retention
- magic_squares_and_cards.py: Magic squares and card problem (Martin Gardner)
- mamas_age.py: Mama's age puzzle
- map.py: Simple map coloring problem.
- map_coloring.py: Simple map coloring problem. Includes symmetry breaking with
value_precede_chain
- marathon2.py: Marathon puzzle (XPress example)
- mastermind_like_problem.py: Mastermind like problem
- matrix_element_test.py: Testing
matrix_element
. However, it is too slow for real use. The version using val == Element(x_flat,i*c+j)
is much faster and thus recommended.
- max_flow_taha.py: Maximum flow problem (Taha)
- max_flow_winston1.py: Maximum flow problem (Winston)
- maximum_density_still_life.py: Maximum density still life
- MCDP1.py: Manufacturing Cell Design Problem (MCDP)
- minesweeper.py: Minesweeper
Data files:
- minimum_except_0.py: Test of global constraint
minimum_except_0
(and minimum_except_c
)
- miss_manners.py: Miss Manners' seating problem
- monks_and_doors.py: Monks and doors puzzle
- mr_smith.py: Mr Smith problem, logic problem (from IF Prolog)
- music_men.py: Music Men puzzle
- nadel.py: Nadel's construction problem
- no_time_to_try.py: No time to try puzzle (Katie Steckles)
- nonogram_regular.py: Nonogram solver using a decomposition of global constraint
regular
. Compare with nonogram_regular_table.py. The program run_nonogram.py is a benchmark using some of these instances.
Problem instances:
- nonogram_regular_table.py: Nonogram solver using
regular_table
. See the Nonogram instances above.
- nontransitive_dice.py: Nontransitive dice
- nqueens_all_solutions.py: N queens problem
- number_lock.py: Number lock puzzle (Crack the code, Mastermind like puzzle)
- number_of_days.py: Number of days problem
- number_puzzle8.py: Number puzzle #8 (2002 AMC 10/12B)
- number_square.py: Number square puzzle (Van Hentenryck)
- nurse_rostering.py: Nurse rostering
- nvalue.py: Test of global constraint
nvalue
- nvalues.py: Test of global constraint
nvalues
- olympic.py: Olympic puzzle (alphametic, standard Prolog benchmark)
- organize_day.py: Organize a day, simple scheduling problem (from ECLiPSe)
- ormat_game.py: Ormat Game
- p_median.py: P-median problem (from OPL)
- pair_divides_the_sum.py: Pair divides the sum
- pandigital_numbers.py: Pandigital numbers in "any" base
- partition_into_subsets_of_equal_values.py: Partition into subsets of equal values
- pentonomies.py: Pentonomies puzzle. The instances are in the file pentonomies_problems.py
- perfect_square_sequence.py: Perfect square sequence
- perfect_squares.py: Perfect squares placements
- permutation3.py: Test of global constraint
permutation3(x,p,y)
- pert.py: Simple PERT model
- photo_problem.py: Photo problem
- picking_teams.py: Picking teams
- pigeon_hole.py: Pigeon hole problem
- ping_pong.py: Ping pong tournament puzzle
- place_number_puzzle.py: Place number puzzle
- polydivisible_numbers.py: Polydivisible numbers
- post_office_problem2.py: Post office problem (Winston)
- pythagoras.py: Pythagoras
- quasigroup_completion.py: Quasigroup completion
Data files:
- queens_diversity.py: Queens diversity
- rabbits.py: Rabbits and pheasants problem
- reduce_overlapping_intervals_cp.py: Reduce overlapping intervals (StackOverflow)
- regexp.py: Simple regular expression: Generating variants of "kjellerstrand" using
regular
constraint.
- regular_test.py: Testing the decomposition of global constraint
regular
constraint.
- regular_table_test.py: Testing the decomposition of global constraint
regular_table
constraint.
- rehearsal.py: Scheduling a rehearsal
- remarkable_sequence.py: Remarkable sequence
- remainders.py: Remainders puzzle (Kordemsky)
- rogo2.py: Rogo puzzle
Instances:
- run_nonogram.py: Benchmark for the nonogram solver comparing nonogram_regular.py and nonogram_regular_table.py
- safe_cracking.py: Safe cracking puzzle (from Oz primer)
- sat.py: Satisfiability problem (GLPK)
- schedule1.py: Simple scheduling problem
- scheduling_speakers.py: Scheduling speakers (Rina Dechter)
- secret_santa.py: Secret santa problem
- secret_santa2.py: Secret santa problem II (optimizing "santa distance")
- send_more_money.py: SEND+MORE=MONEY puzzle
- send_more_money_any_base.py: SEND+MORE=MONEY in "any" base
- send_most_money.py: SEND+MOST=MONEY (maximize MONEY)
- sequence.py: Test of global constriant
sequence
- serial_crack.py: Serial crack problem
- seseman.py: Seseman Convent problem.
- set_covering.py: Set covering, placing of firestations (Winston)
- set_covering2.py: Set covering, number of security telephons on a campus (Taha)
- set_covering3.py: Set covering, senators making a committe (Murty)
- set_covering4.py: Set covering (and set partition), work scheduling (Lundgren, Roennqvist, Vaerbrand "Optimeringslaera")
- set_covering_deployment.py: Set covering deployment
- set_covering_skiena.py: Set covering problem (Steven Skiena)
- set_partition.py: Set partition
- sicherman_dice.py: Sicherman dice
- ski_assignment.py: Ski assignment problem
- skyscraper.py: Skyscraper puzzle
- sliding_sum.py: Test of global constraint
sliding_sum
- smugglers_knapsack.py: Smuggler's knapsack (Marriot, Stuckey)
- social_golfer1.py: Social Golfer problem
- sonet_problem.py: SONET problem
- sort_array.py: Test of constraint
sort_array
- square_root_of_wonderful.py: Square root of WONDERFUL (Martin Gardner)
- stable_marriage.py: Stable Marriage problem (from Van Hentenryck's OPL book and some other problem instances)
- steiner.py: Steiner triplets
- strimko2.py: Strimko puzzle (Latin squares with "streams").
Some data files:
- stuckey_seesaw.py: Simple seesaw problem (Stuckey and Marriott)
- subset_sum.py: Subset sum problem (Katta G. Murty)
- sudoku.py: Sudoku, checking over hundred instances of sizes 9x9, 16x16, and 25x25 (mostly from the Gecode collection). The instances are in sudoku_problems.py
- sudoku_17_hints.py: Checks all 49151 Sudoku instances with 17 hints from Gordon Royle (available in sudoku17.txt)
- survo_puzzle.py: Survo puzzle
Data files:
- talisman_square.py: Talisman square
- temporal_reasoning.py: Temporal reasoning (Apt)
- the_family_puzzle.py: The Family puzzle
- timpkin.py: Mrs Timkpin's age problem (Dudeney)
- to_num_test.py: Converts inter to/from an array of digits using the constraint
to_num
- torn_numbers.py: Torn numbers puzzle (Dudeney)
- tourist_site_competition.py: Tourist site competition
- traffic_lights.py: Traffic lights problem (CSPLib problem 16)
- tsp.py: TSP problem (using a MIP modelling approach, port from GLPK)
- tsp_circuit.py: TSP problem using decomposition of the
circuit
constraint (and circuit_path
)
- tunapalooza.py: Tunapalooza puzzle
- TUCTF2017_future_solver.py: TUCTF 2017 Future solver
- twin_letters.py: Twin letters puzzle
- value_precede_chain_test.py: Test of constraints
value_precede
and value_precede_chain
- volsay.py: Volsay simple optimization problem.
- volsay2.py: Volsay simple optimization problem
- volsay3.py: Volsay simple optimization problem
- warehouse_location.py: Warehouse location problem
- water_buckets1.py: Water buckets problem (generalized)
- wedding_optimal_chart.py: Finding an optimal wedding seating chart
- who_killed_agatha_all_solutions.py: Who killed agatha? (The Dreadsbury Mansion Murder Mystery, an automated reasoning problem)
- word_square.py: Word square
- young_tableaux.py: Young tableaux and partitions
- who_killed_agatha_all_solutions.py
- xkcd.py: xkcd knapsack problem
- zebra.py: Zebra puzzle


This applications lists the number of confirmed COVID-19 cases, by location and dates.
Total reported cases as of today.
Total new reported cases since previous day.
| Province/State | Country/Region | Latitude | Longitude | Reported cases | New reported cases |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 |


JJActionItem
@objc
@IBDesignable
open class JJActionItem : UIControl
The item view representing an action.
-
The action that is executed when the item is tapped. Default is
nil
.Declaration
Swift
@objc open var action: ((JJActionItem) -> Void)?
Parameters
item
The action item that has been tapped.
-
Calls the action on the action item.
Declaration
Swift
@objc public func callAction()
-
The color of action item circle view. Default is
UIColor.white
.See also
circleView
Declaration
Swift
@objc @IBInspectable public dynamic var buttonColor: UIColor { get set }
-
The color of action item circle view with highlighted state. Default is
nil
.See also
circleView
Declaration
Swift
@objc @IBInspectable public dynamic var highlightedButtonColor: UIColor? { get set }
-
The image displayed by the item. Default is
nil
.See also
imageView
Declaration
Swift
@objc @IBInspectable public dynamic var buttonImage: UIImage? { get set }
-
The tint color of the image view. By default the color of the floating action button is used.
Warning
Only template images are colored.
See also
Declaration
Swift
@objc @IBInspectable public dynamic var buttonImageColor: UIColor { get set }
-
The title label of the item. Can be configured as needed. Read only.
Declaration
Swift
@objc open fileprivate(set) lazy var titleLabel: UILabel { get set }
-
The image view of the item. Can be configured as needed. Read only.
See also
buttonImage
See also
buttonImageColor
Declaration
Swift
@objc open fileprivate(set) lazy var imageView: UIImageView { get set }
-
The background circle of the item. Can be configured as needed. Read only.
See also
buttonColor
See also
highlightedButtonColor
Declaration
Swift
@objc open fileprivate(set) lazy var circleView: JJCircleView { get set }
-
The position of the title label. Default is
.leading
.Declaration
Swift
@objc public dynamic var titlePosition: JJActionItemTitlePosition { get set }
-
The position of the title label. Default is
-1
. WhentitleSpacing
is negative default spacing is used: Default horizontal spacing is12
. Default vertical spacing is4
.Declaration
Swift
@objc public dynamic var titleSpacing: CGFloat { get set }
-
The size of the image view. Default is
(0, 0)
. When imageSize is.zero
the image is shrunken until it fits completely into the circle view. If it already does the actual size of the image is used.Declaration
Swift
@objc public dynamic var imageSize: CGSize { get set }
-
Returns an object initialized from data in a given unarchiver.
Declaration
Swift
public required init?(coder aDecoder: NSCoder)
Parameters
aDecoder
An unarchiver object.
Return Value
self
, initialized using the data in decoder.
-
Tells the view that its superview changed.
Declaration
Swift
open override func didMoveToSuperview()
-
Updates constraints for the view.
Declaration
Swift
open override func updateConstraints()
-
A Boolean value indicating whether the action item draws a highlight.
Declaration
Swift
open override var isHighlighted: Bool { get set }