|
TGBOT
0.0.1
C++ library for Telegram bot API
|
This class executes telegram api methods. More...
#include <Api.h>
Public Member Functions | |
| Api (const std::string &token) | |
| bool | answerCallbackQuery (const std::string &callbackQueryId, const std::string &text="", bool showAlert=false, const std::string &url="", int32_t cacheTime=0) const |
| Use this method to send answers to callback queries sent from inline keyboards. More... | |
| bool | answerInlineQuery (const std::string &inlineQueryId, const std::vector< InlineQueryResult::Ptr > &results, int32_t cacheTime=300, bool isPersonal=false, const std::string &nextOffset="", const std::string &switchPmText="", const std::string &switchPmParameter="") const |
| Use this method to send answers to an inline query. More... | |
| void | deleteMessage (int64_t chatId, int32_t messageId) const |
| Use this method to delete messages sent by bot (or by other users if bot is admin). More... | |
| bool | deleteWebhook () const |
| Use this method to remove webhook integration if you decide to switch back to getUpdates. More... | |
| std::string | downloadFile (const std::string &filePath, const std::vector< HttpReqArg > &args=std::vector< HttpReqArg >()) const |
| Downloads file from Telegram and saves it in memory. More... | |
| Message::Ptr | editMessageCaption (int64_t chatId=0, int32_t messageId=0, const std::string &caption="", const std::string &inlineMessageId="", const GenericReply::Ptr replyMarkup=GenericReply::Ptr()) const |
| Use this method to edit captions of messages sent by the bot or via the bot (for inline bots). More... | |
| Message::Ptr | editMessageReplyMarkup (int64_t chatId=0, int32_t messageId=0, const std::string &inlineMessageId="", const GenericReply::Ptr replyMarkup=GenericReply::Ptr()) const |
| Use this method to edit only the reply markup of messages sent by the bot or via the bot (for inline bots). More... | |
| Message::Ptr | editMessageText (const std::string &text, int64_t chatId=0, int32_t messageId=0, const std::string &inlineMessageId="", const std::string &parseMode="", bool disableWebPagePreview=false, const GenericReply::Ptr replyMarkup=GenericReply::Ptr()) const |
| Use this method to edit text and game messages sent by the bot or via the bot (for inline bots) More... | |
| Message::Ptr | forwardMessage (int64_t chatId, int64_t fromChatId, int32_t messageId, bool disableNotification=false) const |
| Use this method to forward messages of any kind. More... | |
| Chat::Ptr | getChat (int64_t chatId) const |
| Use this method to get up to date information about the chat (current name of the user for one-on-one conversations, current username of a user, group or channel, etc.). More... | |
| std::vector< ChatMember::Ptr > | getChatAdministrators (int64_t chatId) const |
| Use this method to get a list of administrators in a chat. More... | |
| ChatMember::Ptr | getChatMember (int64_t chatId, int32_t userId) const |
| Use this method to get information about a member of a chat. More... | |
| int32_t | getChatMembersCount (int64_t chatId) const |
| Use this method to get the number of members in a chat. More... | |
| File::Ptr | getFile (const std::string &fileId) const |
| Use this method to get basic info about a file and prepare it for downloading. More... | |
| User::Ptr | getMe () const |
| A simple method for testing your bot's auth token. More... | |
| std::vector< Update::Ptr > | getUpdates (int32_t offset=0, int32_t limit=100, int32_t timeout=0, const StringArrayPtr &allowedUpdates=nullptr) const |
| Use this method to receive incoming updates using long polling. More... | |
| UserProfilePhotos::Ptr | getUserProfilePhotos (int32_t userId, int32_t offset=0, int32_t limit=100) const |
| Use this method to get a list of profile pictures for a user. More... | |
| WebhookInfo::Ptr | getWebhookInfo () const |
| Use this method to get current webhook status. More... | |
| bool | kickChatMember (int64_t chatId, int32_t userId) const |
| Use this method to kick a user from a group or a supergroup. More... | |
| bool | leaveChat (int64_t chatId) const |
| Use this method for your bot to leave a group, supergroup or channel. More... | |
| Message::Ptr | sendAudio (int64_t chatId, const InputFile::Ptr audio, const std::string &caption="", int32_t duration=0, const std::string &performer="", const std::string &title="", int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr(), bool disableNotification=false) const |
| Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message. More... | |
| Message::Ptr | sendAudio (int64_t chatId, const std::string &audioId, const std::string &caption="", int32_t duration=0, const std::string &performer="", const std::string &title="", int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr(), bool disableNotification=false) const |
| Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message. More... | |
| void | sendChatAction (int64_t chatId, const std::string &action) const |
| Use this method when you need to tell the user that something is happening on the bot's side. More... | |
| Message::Ptr | sendContact (int64_t chatId, std::string phoneNumber, std::string firstName, std::string lastName="", bool disableNotification=false, int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr()) const |
| Use this method to send phone contacts. More... | |
| Message::Ptr | sendDocument (int64_t chatId, const InputFile::Ptr document, const std::string &caption="", int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr(), bool disableNotification=false) const |
| Use this method to send general files. More... | |
| Message::Ptr | sendDocument (int64_t chatId, const std::string &documentId, const std::string &caption="", int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr(), bool disableNotification=false) const |
| Use this method to send general files. More... | |
| Message::Ptr | sendLocation (int64_t chatId, float latitude, float longitude, int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr(), bool disableNotification=false) const |
| Use this method to send point on the map. More... | |
| Message::Ptr | sendMessage (int64_t chatId, const std::string &text, bool disableWebPagePreview=false, int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr(), const std::string &parseMode="", bool disableNotification=false) const |
| Use this method to send text messages. More... | |
| Message::Ptr | sendPhoto (int64_t chatId, const InputFile::Ptr photo, const std::string &caption="", int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr(), bool disableNotification=false) const |
| Use this method to send photos. More... | |
| Message::Ptr | sendPhoto (int64_t chatId, const std::string &photoId, const std::string &caption="", int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr(), bool disableNotification=false) const |
| Use this method to send photos. More... | |
| Message::Ptr | sendSticker (int64_t chatId, const InputFile::Ptr sticker, int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr(), bool disableNotification=false) const |
| Use this method to send .webp stickers. More... | |
| Message::Ptr | sendSticker (int64_t chatId, const std::string &stickerId, int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr(), bool disableNotification=false) const |
| Use this method to send .webp stickers. More... | |
| Message::Ptr | sendVenue (int64_t chatId, float latitude, float longitude, std::string title, std::string address, std::string foursquareId="", bool disableNotification=false, int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr()) const |
| Use this method to send information about a venue. More... | |
| Message::Ptr | sendVideo (int64_t chatId, const InputFile::Ptr video, int32_t duration=0, int32_t width=0, int32_t height=0, const std::string &caption="", int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr(), bool disableNotification=false) const |
| Use this method to send video files, Telegram clients support mp4 videos (other formats may be sent as Document). More... | |
| Message::Ptr | sendVideo (int64_t chatId, const std::string &videoId, int32_t duration=0, int32_t width=0, int32_t height=0, const std::string &caption="", int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr(), bool disableNotification=false) const |
| Use this method to send video files, Telegram clients support mp4 videos (other formats may be sent as Document). More... | |
| Message::Ptr | sendVideoNote (int64_t chatId, const InputFile::Ptr videoNote, int64_t replyToMessageId=0, bool disableNotification=false, int32_t duration=0, int32_t length=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr()) |
| Use this method to send video messages. More... | |
| Message::Ptr | sendVideoNote (int64_t chatId, const std::string &videoNote, int64_t replyToMessageId=0, bool disableNotification=false, int32_t duration=0, int32_t length=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr()) |
| Use this method to send video messages. More... | |
| Message::Ptr | sendVoice (int64_t chatId, const InputFile::Ptr voice, const std::string &caption="", int duration=0, int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr(), bool disableNotification=false) const |
| Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message. More... | |
| Message::Ptr | sendVoice (int64_t chatId, const std::string &voiceId, const std::string &caption="", int duration=0, int32_t replyToMessageId=0, const GenericReply::Ptr replyMarkup=GenericReply::Ptr(), bool disableNotification=false) const |
| Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message. More... | |
| void | setWebhook (const std::string &url="", const InputFile::Ptr certificate=nullptr, int32_t maxConnection=40, const StringArrayPtr &allowedUpdates=nullptr) const |
| Use this method to specify a url and receive incoming updates via an outgoing webhook. More... | |
| bool | unbanChatMember (int64_t chatId, int32_t userId) const |
| Use this method to unban a previously kicked user in a supergroup. More... | |
This class executes telegram api methods.
Telegram docs: https://core.telegram.org/bots/api#available-methods
| TgBot::Api::Api | ( | const std::string & | token | ) |
| bool TgBot::Api::answerCallbackQuery | ( | const std::string & | callbackQueryId, |
| const std::string & | text = "" , |
||
| bool | showAlert = false , |
||
| const std::string & | url = "" , |
||
| int32_t | cacheTime = 0 |
||
| ) | const |
Use this method to send answers to callback queries sent from inline keyboards.
The answer will be displayed to the user as a notification at the top of the chat screen or as an alert.
| callbackQueryId | Unique identifier for the query to be answered |
| text | Optional Text of the notification. If not specified, nothing will be shown to the user, 0-200 characters |
| showAlert | Optional If true, an alert will be shown by the client instead of a notification at the top of the chat screen. Defaults to false. |
| url | Optional URL that will be opened by the user's client. If you have created a Game and accepted the conditions via , specify the URL that opens your game – note that this will only work if the query comes from a callback_game button |
| cacheTime | Optional The maximum amount of time in seconds that the result of the callback query may be cached client-side. Telegram apps will support caching starting in version 3.14. Defaults to 0. |
| bool TgBot::Api::answerInlineQuery | ( | const std::string & | inlineQueryId, |
| const std::vector< InlineQueryResult::Ptr > & | results, | ||
| int32_t | cacheTime = 300 , |
||
| bool | isPersonal = false , |
||
| const std::string & | nextOffset = "" , |
||
| const std::string & | switchPmText = "" , |
||
| const std::string & | switchPmParameter = "" |
||
| ) | const |
Use this method to send answers to an inline query.
No mode that 50 results per query are allowed.
| inlineQueryId | Unique identifier for the answered query. |
| results | Array of results for the inline query. |
| cacheTime | The maximum amount of time in seconds that the result of the inline query may be cached on the server. Defaults to 300. |
| isPersonal | Pass True, if results may be cached on the server side only for the user that sent the query. By default, results may be returned to any user who sends the same query. |
| nextOffset | Pass the offset that a client should send in the next query with the same text to receive more results. Pass an empty string if there are no more results or if you don‘t support pagination. Offset length can’t exceed 64 bytes. |
| switchPmText | If passed, clients will display a button with specified text that switches the user to a private chat with the bot and sends the bot a start message with the parameter switch_pm_parameter |
| switchPmParameter | Parameter for the start message sent to the bot when user presses the switch button |
| void TgBot::Api::deleteMessage | ( | int64_t | chatId, |
| int32_t | messageId | ||
| ) | const |
Use this method to delete messages sent by bot (or by other users if bot is admin).
| chatId | Unique identifier for the target chat. |
| messageId | Unique identifier for the target message. |
| bool TgBot::Api::deleteWebhook | ( | ) | const |
Use this method to remove webhook integration if you decide to switch back to getUpdates.
Returns True on success. Requires no parameters.
| std::string TgBot::Api::downloadFile | ( | const std::string & | filePath, |
| const std::vector< HttpReqArg > & | args = std::vector< HttpReqArg >() |
||
| ) | const |
Downloads file from Telegram and saves it in memory.
| filePath | Telegram file path. |
| args | Additional api parameters. |
| Message::Ptr TgBot::Api::editMessageCaption | ( | int64_t | chatId = 0 , |
| int32_t | messageId = 0 , |
||
| const std::string & | caption = "" , |
||
| const std::string & | inlineMessageId = "" , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() |
||
| ) | const |
Use this method to edit captions of messages sent by the bot or via the bot (for inline bots).
| chatId | Optional Required if inline_message_id is not specified. Unique identifier for the target chat or username of the target channel (in the format ) |
| messageId | Optional Required if inline_message_id is not specified. Identifier of the sent message |
| caption | Optional New caption of the message |
| inlineMessageId | Optional Required if chat_id and message_id are not specified. Identifier of the inline message |
| replyMarkup | Optional A JSON-serialized object for an inline keyboard. |
| Message::Ptr TgBot::Api::editMessageReplyMarkup | ( | int64_t | chatId = 0 , |
| int32_t | messageId = 0 , |
||
| const std::string & | inlineMessageId = "" , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() |
||
| ) | const |
Use this method to edit only the reply markup of messages sent by the bot or via the bot (for inline bots).
| chatId | Optional Required if inline_message_id is not specified. Unique identifier for the target chat or username of the target channel (in the format ) |
| messageId | Optional Required if inline_message_id is not specified. Identifier of the sent message |
| inlineMessageId | Optional Required if chat_id and message_id are not specified. Identifier of the inline message |
| replyMarkup | Optional A JSON-serialized object for an inline keyboard. |
| Message::Ptr TgBot::Api::editMessageText | ( | const std::string & | text, |
| int64_t | chatId = 0 , |
||
| int32_t | messageId = 0 , |
||
| const std::string & | inlineMessageId = "" , |
||
| const std::string & | parseMode = "" , |
||
| bool | disableWebPagePreview = false , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() |
||
| ) | const |
Use this method to edit text and game messages sent by the bot or via the bot (for inline bots)
| text | New text of the message |
| chatId | Optional Required if inline_message_id is not specified. Unique identifier for the target chat or username of the target channel (in the format ) |
| messageId | Optional Required if inline_message_id is not specified. Identifier of the sent message |
| inlineMessageId | Optional Required if chat_id and message_id are not specified. Identifier of the inline message |
| parseMode | Optional Send Markdown or HTML, if you want Telegram apps to show bold, italic, fixed-width text or inline URLs in your bot's message. |
| disableWebPagePreview | Optional Disables link previews for links in this message |
| replyMarkup | Optional A JSON-serialized object for an inline keyboard. |
| Message::Ptr TgBot::Api::forwardMessage | ( | int64_t | chatId, |
| int64_t | fromChatId, | ||
| int32_t | messageId, | ||
| bool | disableNotification = false |
||
| ) | const |
Use this method to forward messages of any kind.
| chatId | Unique identifier for the target chat. |
| fromChatId | Unique identifier for the chat where the original message was sent — User or GroupChat id. |
| messageId | Unique message identifier. |
| disableNotification | Optional. Sends the message silenty. |
| Chat::Ptr TgBot::Api::getChat | ( | int64_t | chatId | ) | const |
Use this method to get up to date information about the chat (current name of the user for one-on-one conversations, current username of a user, group or channel, etc.).
Returns a Chat object on success.
| chatId | Unique identifier for the target chat or username of the target supergroup or channel (in the format ) |
| std::vector<ChatMember::Ptr> TgBot::Api::getChatAdministrators | ( | int64_t | chatId | ) | const |
Use this method to get a list of administrators in a chat.
On success, returns an Array of ChatMember objects that contains information about all chat administrators except other bots. If the chat is a group or a supergroup and no administrators were appointed, only the creator will be returned.
| chatId | Unique identifier for the target chat or username of the target supergroup or channel (in the format ) |
| ChatMember::Ptr TgBot::Api::getChatMember | ( | int64_t | chatId, |
| int32_t | userId | ||
| ) | const |
Use this method to get information about a member of a chat.
Returns a ChatMember object on success.
| chatId | Unique identifier for the target chat or username of the target supergroup or channel (in the format ) |
| userId | Unique identifier of the target user |
| int32_t TgBot::Api::getChatMembersCount | ( | int64_t | chatId | ) | const |
Use this method to get the number of members in a chat.
Returns Int on success.
| chatId | Unique identifier for the target chat or username of the target supergroup or channel (in the format ) |
| File::Ptr TgBot::Api::getFile | ( | const std::string & | fileId | ) | const |
Use this method to get basic info about a file and prepare it for downloading.
For the moment, bots can download files of up to 20MB in size.
| fileId | File identifier to get info about |
| User::Ptr TgBot::Api::getMe | ( | ) | const |
A simple method for testing your bot's auth token.
| std::vector<Update::Ptr> TgBot::Api::getUpdates | ( | int32_t | offset = 0 , |
| int32_t | limit = 100 , |
||
| int32_t | timeout = 0 , |
||
| const StringArrayPtr & | allowedUpdates = nullptr |
||
| ) | const |
Use this method to receive incoming updates using long polling.
This method will not work if an outgoing webhook is set up. In order to avoid getting duplicate updates, recalculate offset after each server response.
| offset | Optional. Identifier of the first update to be returned. Must be greater by one than the highest among the identifiers of previously received updates. By default, updates starting with the earliest unconfirmed update are returned. An update is considered confirmed as soon as getUpdates is called with an offset higher than its update_id. |
| limit | Optional. Limits the number of updates to be retrieved. Values between 1—100 are accepted. Defaults to 100. |
| timeout | Optional. Timeout in seconds for long polling. Defaults to 0, i.e. usual short polling. |
| allowed_updates | Optional. List the types of updates you want your bot to receive. For example, specify [“message”, “edited_channel_post”, “callback_query”] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all updates regardless of type (default). If not specified, the previous setting will be used. |
| UserProfilePhotos::Ptr TgBot::Api::getUserProfilePhotos | ( | int32_t | userId, |
| int32_t | offset = 0 , |
||
| int32_t | limit = 100 |
||
| ) | const |
Use this method to get a list of profile pictures for a user.
| userId | Unique identifier of the target user. |
| offset | Optional. Sequential number of the first photo to be returned. By default, all photos are returned. |
| limit | Optional. Limits the number of photos to be retrieved. Values between 1—100 are accepted. Defaults to 100. |
| WebhookInfo::Ptr TgBot::Api::getWebhookInfo | ( | ) | const |
Use this method to get current webhook status.
Requires no parameters. On success, returns a WebhookInfo object. If the bot is using getUpdates, will return an object with the url field empty.
| bool TgBot::Api::kickChatMember | ( | int64_t | chatId, |
| int32_t | userId | ||
| ) | const |
Use this method to kick a user from a group or a supergroup.
| chatId | Unique identifier for the target group. |
| userId | Unique identifier of the target user. |
| bool TgBot::Api::leaveChat | ( | int64_t | chatId | ) | const |
Use this method for your bot to leave a group, supergroup or channel.
| chatId | Unique identifier for the target chat or username of the target supergroup or channel (in the format ) |
| Message::Ptr TgBot::Api::sendAudio | ( | int64_t | chatId, |
| const InputFile::Ptr | audio, | ||
| const std::string & | caption = "" , |
||
| int32_t | duration = 0 , |
||
| const std::string & | performer = "" , |
||
| const std::string & | title = "" , |
||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() , |
||
| bool | disableNotification = false |
||
| ) | const |
Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message.
For this to work, your audio must be in an .ogg file encoded with OPUS (other formats may be sent as Document).
| chatId | Unique identifier for the target chat. |
| audio | Audio to send. |
| caption | Audio caption, 0-200 characters |
| duration | Duration of sent audio in seconds. |
| performer | Performer |
| title | Track name |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. An object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| disableNotification | Optional. Sends the message silenty. |
| Message::Ptr TgBot::Api::sendAudio | ( | int64_t | chatId, |
| const std::string & | audioId, | ||
| const std::string & | caption = "" , |
||
| int32_t | duration = 0 , |
||
| const std::string & | performer = "" , |
||
| const std::string & | title = "" , |
||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() , |
||
| bool | disableNotification = false |
||
| ) | const |
Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message.
For this to work, your audio must be in an .ogg file encoded with OPUS (other formats may be sent as Document).
| chatId | Unique identifier for the target chat. |
| audio | Id of the audio that is already on the Telegram servers. |
| caption | Audio caption, 0-200 characters |
| duration | Duration of sent audio in seconds. |
| performer | Performer |
| title | Track name |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. An object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| disableNotification | Optional. Sends the message silenty. |
| void TgBot::Api::sendChatAction | ( | int64_t | chatId, |
| const std::string & | action | ||
| ) | const |
Use this method when you need to tell the user that something is happening on the bot's side.
The status is set for 5 seconds or less (when a message arrives from your bot, Telegram clients clear its typing status). Example: The ImageBot needs some time to process a request and upload the image. Instead of sending a text message along the lines of “Retrieving image, please wait…”, the bot may use sendChatAction with action = upload_photo. The user will see a “sending photo” status for the bot. We only recommend using this method when a response from the bot will take a noticeable amount of time to arrive.
| chatId | Unique identifier for the target chat. |
| action | Type of action to broadcast. Choose one, depending on what the user is about to receive: typing for text messages, upload_photo for photos, record_video or upload_video for videos, record_audio or upload_audio for audio files, upload_document for general files, find_location for location data. |
| Message::Ptr TgBot::Api::sendContact | ( | int64_t | chatId, |
| std::string | phoneNumber, | ||
| std::string | firstName, | ||
| std::string | lastName = "" , |
||
| bool | disableNotification = false , |
||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() |
||
| ) | const |
Use this method to send phone contacts.
On success, the sent Message is returned.
| chatId | Unique identifier for the target chat. |
| phoneNumber | Contact's phone number. |
| firstName | Contact's first name. |
| lastName | Contact's last name. |
| disableNotification | Optional. Sends the message silenty. |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. A object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| Message::Ptr TgBot::Api::sendDocument | ( | int64_t | chatId, |
| const InputFile::Ptr | document, | ||
| const std::string & | caption = "" , |
||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() , |
||
| bool | disableNotification = false |
||
| ) | const |
Use this method to send general files.
| chatId | Unique identifier for the target chat. |
| document | Document to send. |
| caption | Document caption (may also be used when resending documents by file_id), 0-200 characters |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. An object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| disableNotification | Optional. Sends the message silenty. |
| Message::Ptr TgBot::Api::sendDocument | ( | int64_t | chatId, |
| const std::string & | documentId, | ||
| const std::string & | caption = "" , |
||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() , |
||
| bool | disableNotification = false |
||
| ) | const |
Use this method to send general files.
| chatId | Unique identifier for the target chat. |
| document | Id of the document that is already on the Telegram servers. |
| caption | Document caption (may also be used when resending documents by file_id), 0-200 characters |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. An object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| disableNotification | Optional. Sends the message silenty. |
| Message::Ptr TgBot::Api::sendLocation | ( | int64_t | chatId, |
| float | latitude, | ||
| float | longitude, | ||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() , |
||
| bool | disableNotification = false |
||
| ) | const |
Use this method to send point on the map.
| chatId | Unique identifier for the target chat. |
| latitude | Latitude of location. |
| longitude | Longitude of location. |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. A object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| disableNotification | Optional. Sends the message silenty. |
| Message::Ptr TgBot::Api::sendMessage | ( | int64_t | chatId, |
| const std::string & | text, | ||
| bool | disableWebPagePreview = false , |
||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() , |
||
| const std::string & | parseMode = "" , |
||
| bool | disableNotification = false |
||
| ) | const |
Use this method to send text messages.
| chatId | Unique identifier for the target chat. |
| text | Text of the message to be sent. |
| disableWebPagePreview | Optional. Disables link previews for links in this message. |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. An object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| parseMode | Optional. Set it to "Markdown" or "HTML" if you want Telegram apps to show bold, italic, fixed-width text or inline URLs in your bot's message. |
| disableNotification | Optional. Sends the message silenty. |
| Message::Ptr TgBot::Api::sendPhoto | ( | int64_t | chatId, |
| const InputFile::Ptr | photo, | ||
| const std::string & | caption = "" , |
||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() , |
||
| bool | disableNotification = false |
||
| ) | const |
Use this method to send photos.
| chatId | Unique identifier for the target chat. |
| photo | Photo to send. |
| caption | Optional. Photo caption. |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. An object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| disableNotification | Optional. Sends the message silenty. |
| Message::Ptr TgBot::Api::sendPhoto | ( | int64_t | chatId, |
| const std::string & | photoId, | ||
| const std::string & | caption = "" , |
||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() , |
||
| bool | disableNotification = false |
||
| ) | const |
Use this method to send photos.
| chatId | Unique identifier for the target chat. |
| photo | Photo to send. Id of the photo that is already on the Telegram servers. |
| caption | Optional. Photo caption. |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. An object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| disableNotification | Optional. Sends the message silenty. |
| Message::Ptr TgBot::Api::sendSticker | ( | int64_t | chatId, |
| const InputFile::Ptr | sticker, | ||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() , |
||
| bool | disableNotification = false |
||
| ) | const |
Use this method to send .webp stickers.
| chatId | Unique identifier for the target chat. |
| sticker | Sticker to send. |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. An object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| disableNotification | Optional. Sends the message silenty. |
| Message::Ptr TgBot::Api::sendSticker | ( | int64_t | chatId, |
| const std::string & | stickerId, | ||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() , |
||
| bool | disableNotification = false |
||
| ) | const |
Use this method to send .webp stickers.
| chatId | Unique identifier for the target chat. |
| sticker | Id of the sticker that is already on the Telegram servers. |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. A object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| disableNotification | Optional. Sends the message silenty. |
| Message::Ptr TgBot::Api::sendVenue | ( | int64_t | chatId, |
| float | latitude, | ||
| float | longitude, | ||
| std::string | title, | ||
| std::string | address, | ||
| std::string | foursquareId = "" , |
||
| bool | disableNotification = false , |
||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() |
||
| ) | const |
Use this method to send information about a venue.
On success, the sent Message is returned.
| chatId | Unique identifier for the target chat. |
| latitude | Latitude of location. |
| longitude | Longitude of location. |
| title | Name of the venue. |
| address | Address of the venue. |
| foursquare_id | Foursquare identifier of the venue. |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. A object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| disableNotification | Optional. Sends the message silenty. |
| Message::Ptr TgBot::Api::sendVideo | ( | int64_t | chatId, |
| const InputFile::Ptr | video, | ||
| int32_t | duration = 0 , |
||
| int32_t | width = 0 , |
||
| int32_t | height = 0 , |
||
| const std::string & | caption = "" , |
||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() , |
||
| bool | disableNotification = false |
||
| ) | const |
Use this method to send video files, Telegram clients support mp4 videos (other formats may be sent as Document).
| chatId | Unique identifier for the target chat. |
| video | Video to send. |
| duration | Duration of sent video in seconds |
| width | Video width |
| height | Video height |
| caption | Video caption (may also be used when resending videos by file_id), 0-200 characters |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. An object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| disableNotification | Optional. Sends the message silenty. |
| Message::Ptr TgBot::Api::sendVideo | ( | int64_t | chatId, |
| const std::string & | videoId, | ||
| int32_t | duration = 0 , |
||
| int32_t | width = 0 , |
||
| int32_t | height = 0 , |
||
| const std::string & | caption = "" , |
||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() , |
||
| bool | disableNotification = false |
||
| ) | const |
Use this method to send video files, Telegram clients support mp4 videos (other formats may be sent as Document).
| chatId | Unique identifier for the target chat. |
| video | Id of the video that is already on the Telegram servers. |
| duration | Duration of sent video in seconds |
| width | Video width |
| height | Video height |
| caption | Video caption (may also be used when resending videos by file_id), 0-200 characters |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. A object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| disableNotification | Optional. Sends the message silenty. |
| Message::Ptr TgBot::Api::sendVideoNote | ( | int64_t | chatId, |
| const InputFile::Ptr | videoNote, | ||
| int64_t | replyToMessageId = 0 , |
||
| bool | disableNotification = false , |
||
| int32_t | duration = 0 , |
||
| int32_t | length = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() |
||
| ) |
Use this method to send video messages.
On success, the sent Message is returned.
| chatId | Unique identifier for the target chat. |
| videoNote | Video note to send. |
| replyToMessageId | If the message is a reply, ID of the original message. |
| disableNotification | Sends the message silently. Users will receive a notification with no sound. |
| duration | Duration of sent video in seconds. |
| length | Video width and height. |
| replyMarkup | Additional interface options. A object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user. |
| Message::Ptr TgBot::Api::sendVideoNote | ( | int64_t | chatId, |
| const std::string & | videoNote, | ||
| int64_t | replyToMessageId = 0 , |
||
| bool | disableNotification = false , |
||
| int32_t | duration = 0 , |
||
| int32_t | length = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() |
||
| ) |
Use this method to send video messages.
On success, the sent Message is returned.
| chatId | Unique identifier for the target chat. |
| videoNote | Id of the video note that exists on the Telegram servers. |
| replyToMessageId | If the message is a reply, ID of the original message. |
| disableNotification | Sends the message silently. Users will receive a notification with no sound. |
| duration | Duration of sent video in seconds. |
| length | Video width and height. |
| replyMarkup | Additional interface options. A object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user. |
| Message::Ptr TgBot::Api::sendVoice | ( | int64_t | chatId, |
| const InputFile::Ptr | voice, | ||
| const std::string & | caption = "" , |
||
| int | duration = 0 , |
||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() , |
||
| bool | disableNotification = false |
||
| ) | const |
Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message.
| chatId | Unique identifier for the target chat. |
| voice | Audio file to send. |
| caption | Voice message caption, 0-200 characters |
| duration | Duration of send audio in seconds. |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. A object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| disableNotification | Optional. Sends the message silenty. |
| Message::Ptr TgBot::Api::sendVoice | ( | int64_t | chatId, |
| const std::string & | voiceId, | ||
| const std::string & | caption = "" , |
||
| int | duration = 0 , |
||
| int32_t | replyToMessageId = 0 , |
||
| const GenericReply::Ptr | replyMarkup = GenericReply::Ptr() , |
||
| bool | disableNotification = false |
||
| ) | const |
Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message.
| chatId | Unique identifier for the target chat. |
| voiceId | Id of the voice that is already on the Telegram servers. |
| caption | Voice message caption, 0-200 characters |
| duration | Duration of send audio in seconds. |
| replyToMessageId | Optional. If the message is a reply, ID of the original message. |
| replyMarkup | Optional. Additional interface options. A object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. |
| disableNotification | Optional. Sends the message silenty. |
| void TgBot::Api::setWebhook | ( | const std::string & | url = "" , |
| const InputFile::Ptr | certificate = nullptr , |
||
| int32_t | maxConnection = 40 , |
||
| const StringArrayPtr & | allowedUpdates = nullptr |
||
| ) | const |
Use this method to specify a url and receive incoming updates via an outgoing webhook.
Whenever there is an update for the bot, we will send an HTTPS POST request to the specified url, containing a JSON-serialized Update. In case of an unsuccessful request, we will give up after a reasonable amount of attempts. If you'd like to make sure that the Webhook request comes from Telegram, we recommend using a secret path in the URL, e.g. www.example.com/<token>.  You will not be able to receive updates using getUpdates for as long as an outgoing webhook is set up. We currently do not support self-signed certificates. Ports currently supported for Webhooks: 443, 80, 88, 8443.
| url | Optional. HTTPS url to send updates to. Use an empty string to remove webhook integration. |
| bool TgBot::Api::unbanChatMember | ( | int64_t | chatId, |
| int32_t | userId | ||
| ) | const |
Use this method to unban a previously kicked user in a supergroup.
| chatId | Unique identifier for the target group. |
| userId | Unique identifier of the target user. |


[gecode-users] Regular expressions !
Guido Tack
tack at ps.uni-sb.de
Thu Mar 13 12:42:45 CET 2008
Mauricio Toro wrote:
> I would like to know if there are examples available
> for the the regular expressions in Gecode and the DFA.
Have a look at nonogram.cc or pentominoes.cc.
> Additionally, I would like to know is somebody
> has suggestions about how to port that to a language withouth
> using classes.
Depends on the language. If you have things like term constructors /
algebraic datatypes, just construct a term and then translate that
into a REG on the C++ side. If you can't do that, you could just have
an array of triples (a,s,b) where a is the start state, s a symbol,
and b the end state, and then turn that into a DFA on the C++ side.
Cheers,
Guido
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2436 bytes
Desc: not available
URL: <http://www.ps.uni-sb.de/pipermail/users/attachments/20080313/f24151cf/attachment.bin>
More information about the gecode-users
mailing list


File: KeyboardInput.js
/* Copyright (c) 2014 Eric Brisson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /** The Keyboard Input module allows for display and selection of notes on a piano keyboard. The user interface is created by instantiating a {{#crossLink "KeyboardInput"}} {{/crossLink}} object. Here is an example describing how to use this module: 1) Add an HTMLtag for a small canvas in the web page source, with a unique 'id' attribute. <canvas id="myUniqueID" width="1" height="1"/> 2) Define an XML string that will describe the interface's initial state. Here is an example: var initXML = '<keyboardinput maxkeys="2" canvasEditable="true">' + '<givenkeys>' + '<givenkey pitchclass="4" register="5" />' + '</givenkeys>' + '<selectedkeys>' + '<selectedkey pitchclass="5" register="2" />' + '</selectedkeys>' + '</keyboardinput>'; The maxkeys attribute indicates the maximum number of keys that can be selected at any given time. The given keys are keys that will be highlighted on the keyboard but will not be selectable/unselectable. The selected keys are keys that will be initially selected - these keys can be unselected. For more details on the XML schema that the interface will accept and return, see the 'valid_input_xml.xsd' file in the module's XML directory. 3) Define a callback function that the interface will use to message back its current state. This function will be called whenever the user changes the interface's state (i.e. by selecting or unselecting keys on the keyboard). var callBack = function(stateXML) { //stateXML will contain the most up-to-date canvas state. }; 4) Create a {{#crossLink "KeyboardInput"}}{{/crossLink}} object using the canvas id from step 1, the XML string from step 2 and the callback function from step 3: var musicCanvas = new KeyboardInput('myUniqueID', initXML, callBack, true); Argument 4 specifies whether the interface should be editable after initialization. Use a false value to display a static interface. Once instantiated, the KeyboardInput object will display an interactive keyboard on the web page. Whenever the user selects or unselects a key, the callback function is called and the most up-to-date canvas state is returned, as an XML string. @module KeyboardInput **/ /** The KeyboardInput object is used to interact with outside components. @class KeyboardInput @constructor @param {String} canID The id of the HTMl 5 canvas to which this application will be bound. @param {String} stateXML The canvas state as xml. @param {Function} respCallBack A function that the controller will use to send the current canvas answer back the caller, whenever the state changes. This function should accept one argument which provides the current XML output. @param {Boolean} editable Specifies whether the user can change the UI after initialization. @return {undefined} **/ KeyboardInput = function(canID, stateXML, respCallBack, editable) { this.callBack = function(cBack) { return function(stateXML) { cBack(stateXML); }; }; this.UI = new KeyboardInput.Control.Controller(canID, stateXML, this.callBack(respCallBack), editable); };


The blockchain is a growing series of unchanged record of data.
It is not owned by a single entity and is managed by a group of computers.
It is an easy way of passing information from A to B in an automated and protected manner.
"The blockchain is an incorruptible digital ledger of economic transactions that can be
programmed to record not just financial transactions, but virtually everything of value."
-Don and Alex Trapscott, authors Blockchain Revolution (2016)
This is a term used to describe the technological developments that will allow computers
to be brought into the physical environment as autonomous entities without human interference.
It will have the ability to move freely and interact with humans and other objects.
Examples:
This is an illusory environment that commands the senses and completely surrounds you.
It gives you the illusion that you are inside of it and thus a part of it. It makes use of
sound and/or other stimuli that provides an engrossing total environment.
Examples:


Eight players Derby County supporters want to leave Pride Park in January
Latest Derby County transfer news | The January transfer is edging ever closer and the Rams will be thinking about what players can either bring in or let go
by Mark WakefieldThe January transfer window is just around the corner, and clubs will be setting up their plans for the month.
Derby County will be one of those clubs who may choose to dip into the transfer market in the New Year.
The Rams are currently in 16th place in the Championship table, and may want to add to their squad in January in order to bolster their squad for the second half of the season.
But what about players heading in the other direction?
Last week we asked Rams fans to choose which players they want to remain at the club in January, and which they think should head out of the exit door.
Derby supporters have voted to allow eight players to leave Pride Park during the next transfer window.
Ikechi Anya (7.1%), Floran Jozefzoon (9.1%) and George Thorne (15.3%) received the lowest percentage of votes from those wishing for them to remain at Derby beyond January.
Derby County latest
This is your round up of all things Derby; the one-stop shop that will keep you updated on the latest goings on at Pride Park and beyond.
Transfers, injuries, match-days and managers, we’ve got you covered.
We’ll be bringing the very latest on the Rams throughout the week and around the clock.
Make sure you keep yourself updated with our handy daily catch up...
Must reads...
- 'I'm my biggest critic' - former Derby midfielder opens up on his form
- 'Not a surprise' - this is what's holding Derby County back in search for identity
- History lesson that points to serious concern for Derby County's top-six hopes
- 'Most difficult' - Derby County boss reveals key role for Wayne Rooney and its more than fans will expect
- 'We have been looking' - latest on new investment plans for Derby County
For all your latest Rams news, opinion, analysis and transfer gossip, click here
You can follow our Rams reporter Steve Nicholson on Twitter, and his email address is<EMAIL_ADDRESS>Next came Kieran Dowell with just 16.3% of Rams fans wanting him to stay at Pride Park for the full duration of his loan spell from Everton.
The final four players who Derby supporters would like to depart in the New Year are Mason Bennett (21.5%), Jonathan Mitchell (37.8%), Tom Huddlestone (42.5%) and Andre Wisdom (47.6%).
Below are the full results, and if you haven't already done so you can cast your votes using our custom-designed widget.
This widget requires javascript to work.
Derby County
Swipe right or left below and decide who you want to keep or sell ahead of next seasonThanks for taking our pollThese are the current standingsResults will be published shortly
0 of 0
- Sell
- Keep


Popular Areas in what is the ph of mildew
Powdery mildew | Cannabis Culture
Sep 5, 2001 . Alkaline water controls powdery mildew. Use a water with a pH of close to eight. Some western waters have higher pH. The pH should be .
http://www.cannabisculture.com/articles/2097.html
Powdery Mildew | GrowGH Blog
Jan 18, 2011 . Powdery mildew (PM) is one of the most disturbing problems in any . including using hydrogen peroxide, a milk solution, and even pH up.
http://www.generalhydroponics.com/blog/2011/01/18/powdery-mildew/
Milk And Mildew - WSU Puyallup Research and Extension Center ...
Linda Chalker-Scott, Ph.D., Extension Urban Horticulturist and Associate . augmented with anecdotal reports of successful powdery mildew control on a variety .
http://www.puyallup.wsu.edu/~linda%20chalker-scott/horticultural%20myths_files/myths/milk%20and%20mildew.pdf
How to Get Rid of Powdery Mildew on Plants: 6 steps - wikiHow
6. Understand why this works. This solution changes the Ph balance on the surface of the plant, making it an unsuitable environment for powdery mildew to .
http://www.wikihow.com/Get-Rid-of-Powdery-Mildew-on-Plants
Controlling or Eliminating Powdery Mildew - Growing a Greener World
Jul 25, 2010 . Providing adequate air circulation will help avoid powdery mildew in . water worked for well for Jeff Gillman, Ph.D and Associate Professor at .
http://www.growingagreenerworld.com/controlling-or-eliminating-powdery-mildew/
Urban Garden Magazine | How to Beat Powdery Mildew
Aug 6, 2009 . Apple cider vinegar is toxic to powdery mildew because of its high acidity (low pH ). Use it at the rate of 1 tablespoon per quart of water several .
http://urbangardenmagazine.com/2009/08/how-to-beat-powdery-mildew-in-hydroponics/


Java Platform
dcm4che requires Java 2 Platform, Standard Edition version 1.4 or 1.5
Download for Windows/Linux/Solaris from Sun
http://java.sun.com/j2se/1.5.0/download.jsp
.
Macintosh OS X has installed the Java 2 Platform by default.
CODECs (COder and DECoder) for JPEG, JPEG2000 and RLE
Since version 1.3 dcm4che supports some transfer syntaxes for encapsulation of encoded pixel data:
PS 3.5 – Annex A.4 Transfer Syntaxes for Encapsulation of Encoded Pixel Data
|
1.2.840.10<IP_ADDRESS>.50 |
JPEG Baseline (Process 1): Default Transfer Syntax for Lossy JPEG 8 Bit Image Compression |
|
1.2.840.10<IP_ADDRESS>.51 |
JPEG Extended (Process 2 & 4): Default Transfer Syntax for Lossy JPEG 12 Bit Image Compression (Process 4 only) |
|
1.2.840.10<IP_ADDRESS>.57 |
JPEG Lossless, Non-Hierarchical (Process 14) |
|
1.2.840.10<IP_ADDRESS>.70 |
JPEG Lossless, Non-Hierarchical, First-Order Prediction (Process 14 [Selection Value 1]): Default Transfer Syntax for Lossless JPEG Image Compression |
|
1.2.840.10<IP_ADDRESS>.80 |
JPEG-LS Lossless Image Compression |
|
1.2.840.10<IP_ADDRESS>.81 |
JPEG-LS Lossy (Near-Lossless) Image Compression |
|
1.2.840.10<IP_ADDRESS>.90 |
JPEG 2000 Image Compression (Lossless Only) |
|
1.2.840.10<IP_ADDRESS>.91 |
JPEG 2000 Image Compression |
PS 3.5 - Annex G Encapsulated RLE Compressed Images
|
1.2.840.10<IP_ADDRESS> |
RLE (Run Length Encoding) Lossless |
Coding and encoding of the JPEG pixel data is done using the Image I/O API, which is part of the Java 2 Platform Standard Edition. By default the J2SE includes CODECs for PNG and JPEG as well as a decoder for GIF. As the built-in JPEG CODEC does not support all functionallity needed by the transfer syntaces, additional CODECS are used, which are distributed under the name JAI Image I/O (http://java.sun.com/products/java-media/jai/downloads/download-iio-1_0_01.html ). This CODEC package has been packaged with JAI (Java Advanced Imaging) since the release of JAI 1.0. The image formats supported by these ancillary codec classes are: BMP, GIF (decoder only), FlashPix (decoder only), JPEG, JPEG2000, PNG, PNM, TIFF, and WBMP. The latest version distributet by SUN is 1.0_01 (2006-07-05). The JAI Image I/O package is now licensed under the open source Berkeley Software Distribution (BSD) License. The latest developer version is available at https://jai-imageio.dev.java.net/ (1.1-beta, 2006-07-05).
The JAI Image I/O package is not a pure Java implementation: Some of its function are implemented in native code, some CODECs are accelerated by additional native classes. If available, the pure Java implementation is used if the native library could not be found.
Coding and encoding of the RLE pixel data is done by a CODEC of the dcm4che project, which is included as the separate archive dcm4che-imageio-rle-2.0.4.jar within the distribution.
Using the CODECs
To ease the setting of the classpath, dcm4che includes several archives implicitely from within the MANIFEST.MF of the dcm4che.jar file. Therefore the archives
log4j.jar
dcm4che-imageio-rle-2.0.4.jar
jai_imageio.jar
clibwrapper_jiio.jar
jai_imageio_api.zip
are added automatically to the classpath as long as dcm4che.jar is part of the classpath and the archives reside in the same directory as dcm4che.jar.
1.If the application does not use encoded pixel data:
In this case it is not neccessary to include the JAI Image I/O package or the RLE archive into the classpath. To ensure a reliable functionality of dcm4che, the archive
jai_imageio_api.zip
should be included into the classpath. The archive is part of the binary distribution of dcm4che and includes the required subset of classes of the JAI Image I/O package. If the archive resides in the same directory as dcm4che.jar, it is included implicitly into the classpath by the MANIFEST of dcm4che.jar.
2. If the application uses encoded pixel data:
The RLE CODEC dcm4che-imageio-rle-2.0.4.jar must be included into the classpath. This is done implicitly, if dcm4che.jar is part of the classpath and the archive reside in the same directory as dcm4che.jar.
a) Using the installer of the JAI Image I/O package
As the JAI Image I/O package requires native libraries, Sun provides separate downloads for Windows, Linux, Solaris SPARC and Solaris x86. Download and install the JDK and/or JRE version, depending of what type of Java 2 Platform is installed on the host system. If both a JDK and a JRE make sure that the JAI Image I/O package is installed for the virtual machine that will be invoked by the application.
On Macintosh OS X systems the JAI Image I/O package is installed as part of the JAI package by default.
b) Custom installation of the JAI Image I/O package
The binary distribution of dcm4che already includes the required files of the JAI Image I/O package for Windows and i568 Linux:
|
lib/clibwrapper_jiio.jar |
CcodecLib JNI interfaces. |
|
lib/jai_imageio.jar |
JAR file containing core JAI Image I/O class files. |
|
bin/clib_jiio.dll |
codecLib JNI DLL libraries. |
|
bin/libclib_jiio.so |
codecLib JNI shared libraries. |
Both JAR archives are implicitly included in the classpath, if dcm4che.jar is part of the classpath and the archives reside in the same directory as dcm4che.jar.
The directory in which the codecLib JNI DLL libraries resides, must be included into PATH system variable (Windows) or LD_LIBRARY_PATH (Linux). In a Windows environment the PATH system variable can be set by selecting System Properties, Advanced tab, Environment Variable button. Append the directory path of clib_jiio.dll preceeded by a ';'. The new value of the PATH variable is valid without the need of a restart. To check the content of PATH variable in a command window, type set PATH.
JAI Image I/O
Java Advanced Imaging Image I/O Tools will be installed under the $JDK directory with the files in the locations given in the following table. The same files will appear in analogous locations in the JRE installation. In the CLASSPATH installation they will be located in the installation directory and its lib subdirectory.
|
COPYRIGHT-jai_imageio.txt |
Copyright notice. |
|
UNINSTALL-jai_imageio |
Uninstall script (Solaris and Linux operating environments only). |
|
LICENSE-jai_imageio.txt |
License agreement. |
|
jre/lib/ext/jai_imageio.jar |
JAR file containing core JAI Image I/O class files. |
|
jre/lib/ext/clibwrapper_jiio.jar |
codecLib JNI interfaces. |
|
jre/lib/i386/libclib_jiio.so |
codecLib JNI shared libraries. |
|
jre/bin/clib_jiio.dll |
codecLib JNI DLL libraries. |
If use of native code is disallowed then the JPEG and PNG
reader-writer plug-ins and some accelerations used for bilevel TIFF
compression will not be available, nor will the native Implementation
of the JPEG 2000 reader-writer plug-in; the Java implementation of
the JPEG 2000 plug-in will however be available. The respective
plug-ins will detect that native libraries cannot be used and respond
accordingly.
Remarks
Version 1.0_01 has a long list of known bugs. Especially the TIFF decoder crashes with an internal error when reading TIFF images written by ImageJ. The detailed cause is not known, but the Bug Database list more than 190 reported bugs for the TIFF CODEC (see: http://bugs.sun.com/bugdatabase/search.do?process=1&category=jai&bugStatus=&subcategory=&type=&keyword=tiff ). Using version 1.1-beta TIFF images written by ImageJ are decoded without errors.
Links
Installation: http://java.sun.com/products/java-media/jai/INSTALL-jai_imageio_1_0_01.html
Features: http://java.sun.com/products/java-media/jai/RELEASE-jai_imageio_1_0_01.html
Introduction to the API: http://java.sun.com/j2se/1.4.2/docs/guide/imageio/spec/imageio_guideTOC.fm.html
Description of the CODECs : http://java.sun.com/products/java-media/jai/forDevelopers/jai-imageio-1_0-rc-docs/overview-summary.html
Implementation
Mapping of transfer syntaxes
Inside the dcm4che package the encapsulated tansfer syntaxes are mapped to a CODEC by the property file org/dcm4cheri/image/ImageReaderFactory.properties:
1.2.840.10<IP_ADDRESS> |
org.dcm4che2.imageioimpl.plugins.rle.RLEImageReader |
1.2.840.10<IP_ADDRESS>.50 |
com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader |
1.2.840.10<IP_ADDRESS>.51 |
com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader |
1.2.840.10<IP_ADDRESS>.57 |
com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader |
1.2.840.10<IP_ADDRESS>.70 |
com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader |
1.2.840.10<IP_ADDRESS>.80 |
com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader |
1.2.840.10<IP_ADDRESS>.81 |
com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader |
1.2.840.10<IP_ADDRESS>.90 |
com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageReaderCodecLib |
1.2.840.10<IP_ADDRESS>.91 |
com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageReaderCodecLib |
Classes in the archive jai_imageio_api.zip:
com/sun/media/imageio/stream/SectorStreamSegmentMapper.class
com/sun/media/imageio/stream/SegmentedImageInputStream.class
com/sun/media/imageio/stream/StreamSegment.class
com/sun/media/imageio/stream/StreamSegmentMapper.class
com/sun/media/imageio/stream/StreamSegmentMapperImpl.class


Interrupt management in STM32
All microcontrollers provide a feature called interrupts. An interrupt is an asynchronous event that causes stopping the execution of the current code on a priority basis. Interrupts originate by the hardware and the software itself, and can be controlled via a Nested Vectored Interrupt Controller.
Last update: 2021-06-07 13:23:39
Table of Content
1. NVIC Controller⚓
Nested Vectored Interrupt Controller (NVIC) is a method of prioritizing interrupts, improving the MCU’s performance and reducing interrupt latency. NVIC also provides implementation schemes for handling interrupts that occur when other interrupts are being executed or when the CPU is in the process of restoring its previous state and resuming its suspended process.
- Clock Security System (CSS) interrupt is connected to Non-Maskable Interrupt (NMI) lines
- Peripheral interrupts are connected to Interrupt Requests (IRQ) lines
- GPIO interrupts are connected to an External Interrupt/Event Controller (EXTI) before connecting to the IRQ lines
External Interrupts are grouped by lines which connect to GPIO. As processor may have many GPIOs, an EXTI line is shared by multiple pins. In one line (group), only one pin can be set to generate interrupt, and software must be able to discriminate which lines generated the interrupt. The external interrupt can be fired on rising edge, or falling edge, or both.
Whenever an interrupt happens, the processor stops the current code, and handle the interrupt by running an Interrupt Service Routines (ISR) which is located in a pre-defined table called Vector Interrupt Table (VIC).
| Number | Exception Type | Priority | Function |
|---|---|---|---|
| 1 | Reset | -3 | Reset |
| 2 | NMI | -2 | Non-Maskable Interrupt |
| 3 | Hard Fault | -1 | All faults that hang the processor |
| 4 | Memory Fault | Configurable | Memory issue |
| 5 | Bus Fault | Configurable | Data bus issue |
| 6 | Usage Fault | Configurable | Data bus issue |
| 7 ~ 10 | Reserved | - | Reserved |
| 11 | SVCall | Configurable | System service call (SVC instruction) |
| 12 | Debug | Configurable | Debug monitor (via SWD) |
| 13 | Reserved | - | Reserved |
| 14 | PendSV | Configurable | Pending request for System Service call |
| 15 | SysTick | Configurable | System Timer |
| 16 ~ 240 | IRQ | Configurable | Interrupt Request |
This table is declared in assembly code in the startup file of MCU startup_*.s
.
startup_stm32f051r8tx.s
g_pfnVectors:
.word _estack
.word Reset_Handler
.word NMI_Handler
.word HardFault_Handler
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word SVC_Handler
.word 0
.word 0
.word PendSV_Handler
.word SysTick_Handler
.word WWDG_IRQHandler /* Window WatchDog */
.word PVD_IRQHandler /* PVD through EXTI Line detect */
.word RTC_IRQHandler /* RTC through the EXTI line */
.word FLASH_IRQHandler /* FLASH */
.word RCC_CRS_IRQHandler /* RCC and CRS */
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */
.word TSC_IRQHandler /* TSC */
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */
.word DMA1_Channel4_5_IRQHandler /* DMA1 Channel 4 and Channel 5 */
.word ADC1_COMP_IRQHandler /* ADC1, COMP1 and COMP2 */
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break/Update/Trigger/Commutation */
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */
.word TIM2_IRQHandler /* TIM2 */
.word TIM3_IRQHandler /* TIM3 */
.word TIM6_DAC_IRQHandler /* TIM6 and DAC */
.word 0 /* Reserved */
.word TIM14_IRQHandler /* TIM14 */
.word TIM15_IRQHandler /* TIM15 */
.word TIM16_IRQHandler /* TIM16 */
.word TIM17_IRQHandler /* TIM17 */
.word I2C1_IRQHandler /* I2C1 */
.word I2C2_IRQHandler /* I2C2 */
.word SPI1_IRQHandler /* SPI1 */
.word SPI2_IRQHandler /* SPI2 */
.word USART1_IRQHandler /* USART1 */
.word USART2_IRQHandler /* USART2 */
.word 0 /* Reserved */
.word CEC_CAN_IRQHandler /* CEC and CAN */
.word 0 /* Reserved */
By convention, the vector table starts at the hardware address 0x00000000
in all Cortex-M based processors. If the vector table resides in the internal flash memory (this is what usually happens), and since the flash in all STM32 MCUs is mapped from 0x08000000
address, it is placed starting from the 0x08000000
address, which is aliased to 0x00000000
when the CPU boots up.
Read about the Boot mode in the Reference Manual
Entry zero of this array is the address of the Main Stack Pointer (MSP) inside the SRAM. Usually, this address corresponds to the end of the SRAM _estack
.
2. Processor Mode⚓
The processor mode can change when exceptions occur. And it can be in one of the following modes:
- Thread Mode: Which is entered on reset, and application run on this mode.
- Handler Mode: Which is entered on all other exceptions
The interrupt entry and exit are hardware implemented in order to reduce the latency and speed up the response. The hardware will do:
- Automatically saves and restores processor context (registers, flags)
- Allows late determination of highest priority pending interrupt
- Allows another pending interrupt to be serviced without a full restore/save for processor context (this feature is called tail-chaining)
3. Preemption⚓
The Preemption happens when a task is abandoned (gets interrupted) in order to handle an exception. The currently running instruction stream is said to be Preempted. When multiple exceptions with the same priority levels are pending, the one with the lowest exception number gets serviced first. And once an exception is active and being serviced by the processor, only exceptions with a higher priority level can Preempt it.
Lower priority level has higher priority of execution.
Consider the following example, where 3 exceptions/interrupts are fired with different priority levels. IRQ1 Preempted IRQ2 and forced IRQ3 to pend until IRQ1 completion. After IRQ1 ISR completion, ISR2 continues where it left off when IRQ1 Preempted it. And finally, after ISR2 completion, ISR3 starts executions. And the context is restored to the main program (foreground).
4. Interrupts Tail-Chaining⚓
When an interrupt (exception) is fired, the main (foreground) code context is saved (pushed) to the stack and the processor branches to the corresponding interrupt vector to start executing the ISR handler. At the end of the ISR, the context saved in the stack is popped out so the processor can resume the main (foreground) code instructions. However, and if a new exception is already pended, the context push & pop are skipped. And the processor handler the second ISR without any additional overhead. This is called Tail-Chaining.
And it requires 6 cycles on Cortex-M3/M4 processors. Which is a huge speedup in the performance and enhanced the interrupt response time greatly (reduces the interrupt latency). Here is an example of what happens if the CPU receives a 2nd interrupt request (IRQ2) while it’s servicing the 1st one (IRQ1).
5. Interrupt Late Arrival⚓
The ARM core can detect a higher priority exception while in the exception entry phase (stacking caller registers & fetching the ISR routine vector to be executed) of another exception. A late arriving interrupt is detected during this period. The higher priority ISR can be fetched and executed but the context saving that has been already done can be skipped. This reduces the latency for the higher priority interrupt and, upon completion of the late-arriving exception handler, the processor can then tail-chain into the initial exception that was going to be serviced (the lower priority one).
A pending higher-priority exception is handled before an already pending lower-priority exception even after the exception entry sequence has started. The lower-priority exception is handled after the higher-priority exception.
6. Interrupt Lifecycle⚓
An interrupt can:
- either be disabled (default behavior) or enabled;
- either be pending (a request is waiting to be served) or not pending;
- either be in an active (being served) or inactive state.
When an interrupt fires, it is marked as pending until the processor can serve it. If no other interrupts are currently being processed, its pending state is automatically cleared by the processor, then it starts get served.
The lower priority ISR has to wait in pending state until no higher priority ISR is being processed. It can be put into inactive state when it is Preemptied by a higher priority ISR.
An interrupt can be forced to fire again during its execution, simply setting its pending bit again. In the same way, the execution of an interrupt can be canceled clearing its pending bit while it is in pending state
7. Reset Behavior⚓
When a reset occurs (Reset input is asserted):
- The MSP (main stack pointer) register loads the initial value from the address
0x00000000
which contains the end address of RAM_estack
- The reset handler address is loaded from address
0x00000004
. - The reset handler gets executed in thread mode.
- The reset handler branches to the main program.
8. Exception Behavior⚓
When an exception occurs, the current instruction stream is stopped and the processor accesses the exceptions vector table:
- The vector address of that exception is loaded from the vector table.
- The exception handler starts to be executed in handler mode.
- The exception handler returns back to main (assuming no further nesting).
Here is more details:
1. Interrupt Stacking (Context Saving)
- The processor will finish the current instruction as long as it’s not a multi-cycle instruction
- The processor state (context) is automatically saved to the stack. Eight registers are pushed (PC, R0-R3, R12, LR, xPSR).
- During or after context saving, the address of the corresponding ISR is loaded from the exception/interrupt vector table
- The link register is modified for return after interrupt
- The first instruction of the ISR starts to be executed by the CPU. For Cortex-M3/M4, the whole latency this process takes is 12 cycles. However, IRQ latency is improved if late-arrival or tail-chaining has occurred.
2. Interrupt Service Routine (ISR) Handling
- ISR should clear the interrupt source flag if required
- Interrupt nesting won’t affect the way the ISR is written however, attention should be paid to the main stack overflow that may occur.
- Given that certain exceptions/interrupts are to be serviced hundreds or thousands of times per second. So it must run so quickly and no delays are permitted within ISR handlers
3. Return From ISR (Context Restoration)
- Detect tail-chaining interrupt, if have, call to the ISR without restoring the context to speed up
- The
EXC_RETURN
instruction is fetched and gets executed to restore the PC and pop the CPU registers. - The return from interrupt (context restoration) on ARM Cortex-M3/M4 requires 10 clock cycles
9. The Peripheral Pending bit⚓
When an interrupt takes place, the most of STM32 peripherals assert a specific signal connected to the NVIC, which is mapped in the peripheral memory through a dedicated bit. This Peripheral Pending bit will be held high until it is manually cleared by the application code.
The ISR Pending bit is different to the Peripheral Pending bit. When the processor starts servicing the ISR, the ISR pending bit is cleared automatically, but the peripheral IRQ pending bit will be held high until it is cleared by the application code.
-
If the Peripheral Pending bit is not clear, the interrupt will be fired again and the ISR will run again
-
It is able to manually set the Peripheral Pending bit to force the ISR run
10. Configure Interrupts⚓
After a reset:
When an STM32 MCU boots up, only Reset, NMI and Hard Fault exceptions are enabled by default. The rest of exceptions and peripheral interrupts are disabled, and they have to be enabled on request.
When configuring a peripheral to work in Interrupt mode, the user application has to:
- Enable interrupt on the interrupt line, e.g. pin PA0 on the EXTI0 line
- Implement the interrupt handler which is declared in the startup file, e.g.
EXTI0_1_IRQHandler
for handle EXTI Line 0 and 1 - Inside the handle:
- Check the interrupt source
- Clear interrupt flag
- Call a callback if needed
11. CubeMX Usage⚓
NVIC can be configured using CubeMX, in the Pinout & Configuration tab. This screen list all interrupts in the system and provides options to setup interrupts:
- Enable or Disable an interrupt: as mentioned above, some interrupts are always enabled, such as NMI, Hard fault, SVC. Note that CubeMX forces to enable SysTick because HAL needs it to handle delay functions
- Set Preemption Priority for each interrupt
- Generate IRQ handlers (in
*_it.c
) and call to HAL callbacks those will clear the pending bit, do something, and finally will call to a weak callback which can be overridden by users.
Interrupt can be configured in each peripheral setting screen. For example, if user enables an external interrupt on a pin, NVIC tab will be available to quickly enable or disable the peripheral interrupt.
12. STM32Cube HAL Usage⚓
To enable an IRQ, the CubeHAL provides the following function:
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn);
where the IRQn_Type
is an enumeration of all exceptions and interrupts defined for that specific MCU. The IRQn_Type
enum is part of the ST Device HAL, and it is defined inside a header file specific for the given STM32 MCU named stm32fxxxx.h
. For example, for an STM32F030R8 MCU the right filename is stm32f030x8.h
(the pattern name of these files is the same of start-up files).
The corresponding function to disable an IRQ is the:
void HAL_NVIC_DisableIRQ(IRQn_Type IRQn);
Note that the above function enable the interrupt line at the NVIC level. A single peripheral must be properly configured to work in interrupt mode to cause it assert the corresponding peripheral interrupt level.
Configure the NVIC Priority Grouping using HAL_NVIC_SetPriorityGrouping()
function if using Group Priority, then use HAL_NVIC_SetPriority()
to set the priority of the selected IRQ.
When the NVIC_PRIORITYGROUP_0
is selected, IRQ preemption is no more possible. The pending IRQ priority will be managed only by the sub priority.
Since the presence of the IRQ pending bit is peripheral dependent, it is a good design practice to clear peripherals IRQ pending status bit as their ISR start to be serviced. The processor core does not keep track of multiple interrupts (it does not queue interrupts), so if clearing the peripheral pending bit at the end of an ISR may lose important IRQs that fire in the middle.
To see if an interrupt is pending (that is, fired but not running):
uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn);
To programmatically set the pending bit of an IRQ which causes the interrupt to fire, as it would be generated by the hardware:
void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn);
Instead, to programmatically clear the pending bit of an IRQ
void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn);
To check if an ISR is active (IRQ being serviced):
uint32_t HAL_NVIC_GetActive(IRQn_Type IRQn);


Using the STAR Technique - Example
Here is an example of how the STAR technique actually helps evaluate candidates effectively. Consider that you are interviewing a candidate for the role of marketing executive of a global organization. This role requires problem-solving skills as well as conflict management skills. You ask an open-ended probing question and look forward to responses in the STAR format.
Below is the complete response of a candidate that has been broken down into 4 boxes each mapping to one letter of the STAR approach. Drag the boxes up or down to arrange them in the correct order.
Give me a specific example of a time when you had to face a difficult challenge. How did you respond to that situation, and what was the outcome?
- Chris and I had worked together on the presentation. So I knew what to present. I called up Chris, and we decided that I should present. So I took to the dais for the first time in my life.
- “It was a year into my first job, and we were due to make a presentation to a group of 15 potential customers on our flagship product. Chris, who was making this presentation got stuck on traffic and was behind schedule by 15 minutes.”
- “Though I was a bit nervous at first, the presentation went well. Also I could take all the questions that the customers had. In the end 12 of the customers decided to purchase our product. And not to mention about the confidence boost that this experience game me.”
- "It was my responsibility to find an alternative so that it didn't reflect badly on our organization and we didn't waste the opportunity.“


Desperate times….Man steals biltong in OK supermarket, stuffs it in his underwear
by Sharon ChirisaMan steals biltong in OK supermarket
A 28-year-old man was beaten up before he was arrested for stealing biltong and stuffing it in his underwear at OK Jason Moyo Street.
Eugen Moyo (24) snatched a packet of biltong and stuffed it in his underwear.
Unbeknown to him he was captured on closed circuit television (CCTV).
When he was making his way out of the shop a security guard arrested him.
The security guard went on to say Moyo tried to flee but onlookers effected a citizen’s arrest and delivered street justice on him.
Moyo was warned and discharged after pleading guilty in court.
YOU MAY ALSO BE INTERESTED IN
The Dark History Behind Black Friday Revealed
WATCH:NUST Slay Queen reveals why she walked around campus semi nude ‘Zodwa Wabantu’ style
VP Chiwenga BANS Wife Mary From Using Social Media
To View and Apply for the latest Jobs and Vacancies in Zimbabwe, Please Visit our Sister website iHarare Jobs


Holiday Hackday
Menu
Home
About
Schedule
FAQ
Code of Conduct
Sponsors
Contact
FAQ
What's a hackathon?
A Hackathon is an event in which computer programmers and others involved in software development, including graphic designers, interface designers and project managers, collaborate intensively on software projects.
Who should attend?
You! If you have any interest in programming our making thins in general then this is for you!
I'm a beginner. Should I skip this?
No way!! No matter your skill level, you will be able to contribute to your team. If you're a little nervous we be having a meetup prior to the hackathon where a hackathon veteran discusses her experiences and offers tips for your first hackathon!
What should I bring?
Bring your laptops, mobile phones, wearable computing devices, and whatever else inspires you. Above all, bring your energy and don’t worry if you forget something, there will be tons of stuff to do.
How much does will this cost me?
We're teaming up with the San Diego Food Bank and making the cost of attendance two canned items.
If I forget my cans will you shun me?
Nah, we'll figure something out :)
Who owns the project at the end?
Whoever makes it!


#DC TRAINED
| DC TRAINED |
|---|
#DC MEN
| DC MEN |
|---|
#DC WOMEN
| DC WOMEN |
|---|
#DC ACTIVE
| LAST 30 DAYS |
|---|
#DC ACTIVE
| LAST 7 DAYS |
|---|
INFORMATION ON BUTTON
| ACTIVE AND REPORTING | |
| ACTIVE AND REPORTING ,5 OF LAST IO REPORTS ERROR | |
| INACTIVE |
| NAME | VILLAGE | PHONE | DAYS SINCE LAST REPORT | week 0 | week 1 | week 2 | week 3 | week 4 |
|---|---|---|---|---|---|---|---|---|
Copyright © 2019 Røde Kors


- main(String[]) - Static method in class controller.Controller
-
Starts the application
- main(String[]) - Static method in class gfx.FadeOutImage
-
- main(String[]) - Static method in class highscore.Test
-
- main(String[]) - Static method in class server.StartUp
-
- main(String[]) - Static method in class testing.BranchTesting
-
- main(String[]) - Static method in class testing.PathCoverage
-
Runs the test
- Major - Class in pawns
-
Class that sets the range, value and color and the picture for a major.
- Major(Pawn.Color) - Constructor for class pawns.Major
-
- Marshall - Class in pawns
-
Class that sets the range, value and color and the picture for a marshall.
- Marshall(Pawn.Color) - Constructor for class pawns.Marshall
-
- Matrix - Class in ui
-
Shows a Matrix build of a double Pawn array.
- Matrix() - Constructor for class ui.Matrix
-
- MenuSingleton - Class in help
-
video tutorials for different parts of the game. dont use directly but via
HelpButtonSingleton class
- MenuUI - Class in ui
-
The start/main menu of the game.
- MenuUI(Viewer) - Constructor for class ui.MenuUI
-
Creates and aligns all of the navigational buttons.
- Miner - Class in pawns
-
Class that sets the range, value and color and the picture for a miner.
- Miner(Pawn.Color) - Constructor for class pawns.Miner
-
- mouseClicked(MouseEvent) - Method in class ui.Matrix
-
Handles pawn/cell click.
- mouseEntered(MouseEvent) - Method in class ui.Matrix
-
- mouseExited(MouseEvent) - Method in class ui.Matrix
-
- mousePressed(MouseEvent) - Method in class ui.Matrix
-
- mouseReleased(MouseEvent) - Method in class ui.Matrix
-
- move(Pawn, Position, Position) - Method in class game.Logic
-
Moves the pawn
- move(Pawn, Position, Position) - Method in class game.OnlineLogic
-
Sends the move to the opponent.
- move(int, int, int, int) - Method in class game.OnlineLogic
-
Receives move from opponent
- movePawn(Pawn, Position, Position) - Method in class controller.Controller
-
Moves the pawn
- movePawn(Pawn, Position, Position) - Method in class ui.Viewer
-


A
NULL is OK, both for passing and for returning.
Parameter points to an array of items.
C
This parameter is a 'user_data', for callbacks; many bindings can pass NULL here.
This symbol is a constructor, not a static method.
E
Generics and defining elements of containers and arrays.
I
Parameter for input. Default is transfer none.
Parameter for input and for returning results. Default is transfer full.
N
NULL may be passed as the value in, out, in-out; or as a return value.
O
Parameter for returning results. Default is transfer full.
Out parameter, where callee must allocate storage.
Out parameter, where caller must allocate storage.
S
The callback is valid only during the call to the method.
The callback is valid until the GDestroyNotify argument is called.
Exposed in C code, not necessarily available in other languages.
The intention of a Stable interface is to enable arbitrary third parties to develop applications to these interfaces, release them, and have confidence that they will run on all minor releases of the product (after the one in which the interface was introduced, and within the same major release). Even at a major release, incompatible changes are expected to be rare, and to have strong justifications.
T
The caller owns the data container, but not the data inside it.
The caller owns the data, and is responsible for free it.
The data is owned by the callee, which is responsible of freeing it.
Override the parsed C type with given type.
U
Unstable interfaces are experimental or transitional. They are typically used to give outside developers early access to new or rapidly changing technology, or to provide an interim solution to a problem where a more general solution is anticipated. No claims are made about either source or binary compatibility from one minor release to the next. The Unstable interface level is a warning that these interfaces are subject to change without warning and should not be used in unbundled products. Given such caveats, customer impact need not be a factor when considering incompatible changes to an Unstable interface in a major or minor release. Nonetheless, when such changes are introduced, the changes should still be mentioned in the release notes for the affected release.
V
This is the invoker for a virtual method.


Oh, don't you wish
That you could be a fish
And swim along with me
Underneath the sea
Strap on some fins
Adjust your mask
Dive in!


Karatsu 10 mile
Karatsu JPN
Race Winners
(54 runnings)
10 Feb
2008
47:01
11 Feb
2007
46:50
12 Feb
2006
47:09
13 Feb
2005
46:51
08 Feb
2004
46:29
09 Feb
2003
46:53
56:23
10 Feb
2002
47:24
56:28
11 Feb
2001
46:35
13 Feb
2000
45:48
14 Feb
1999
46:48
08 Feb
1998
46:52
09 Feb
1997
45:57
11 Feb
1996
46:44
12 Feb
1995
47:06
13 Feb
1994
46:39
07 Feb
1993
46:41
09 Feb
1992
46:39
10 Feb
1991
47:08
11 Feb
1990
47:06.2
12 Feb
1989
46:47
14 Feb
1988
46:39
15 Feb
1987
47:10
16 Feb
1986
47:01
17 Feb
1985
47:55
19 Feb
1984
45:40
Feb
1983
48:38.4
Feb
1982
46:42.5
Feb
1981
46:52.2
17 Feb
1980
46:13.8
25 Feb
1979
47:02.8
12 Feb
1978
46:51.8
13 Feb
1977
47:55.4
15 Feb
1976
48:35.6
Feb
1975
47:25.0
1974
48:08.4
1973
n/a
1972
n/a
1971
47:11.6
1970
---
1969
---
1968
---
11 Dec
1966
47:50.6
12 Dec
1965
48:01
10 Feb
2019
46:27
Yusuke Nishiyama (JPN)
11 Feb
2018
46:12
Yuta Shitara (JPN)
12 Feb
2017
46:36
Shota Onizuka (JPN)
14 Feb
2016
47:47
Ikuto Yufu (JPN)
08 Feb
2015
47:12
Satoru Sasaki (JPN)
09 Feb
2014
47:17
Kaoru Hirosue (JPN)
10 Feb
2013
46:56
Yuichiro Ueno (JPN)
12 Feb
2012
47:00
Sota Hoshi (JPN)
13 Feb
2011
47:20
Yuki Iwamoto (JPN)
14 Feb
2010
47:01
Tomoya Adachi (JPN)
08 Feb
2009
47:04
Yu Mitsuya (JPN)
Ryuji Ono (JPN)
Cyrus Njui (KEN)
Yusei Nakao (JPN)
Takashi Maeda (JPN)
Tadayuki Ojima-2
Kazuhiro Maeda (JPN)
Nana Eikawa (JPN)
Takayuki Matsumiya (JPN)
Mika Watanabe (JPN)
Yuko Matsumiya (JPN)
Kenichi Takahashi-3
Yuki Mori (JPN)
Tadayuki Ojima (JPN)
Kenichi Takahashi-2
Kenichi Takahashi (JPN)
Muneyuki Ojima (JPN)
Kenji Takao (JPN)
Takeo Nakahara (JPN)
Sakae Osaki (JPN)
Katsumi Ikeda (JPN)
Naoki Maeda (JPN)
Isao Nishimura (JPN)
Kazuya Wakakura (JPN)
Satoshi Kato (JPN)
Takao Nakamura (JPN)
Tetsuo Urakawa (JPN)
Hisatoshi Shintaku-2
Masashi Matsuda (JPN)
Hisatoshi Shintaku (JPN)
Michio Mizukubo (JPN)
Kunimitsu Ito (JPN)
Masao Matsuo (JPN)
Ichio Sato-4
Hideki Kita (JPN)
Toshiaki Kamata (JPN)
Ichio Sato-3
Hiromi Nishi (JPN)
Ichio Sato-2
Ichio Sato (JPN)
Katsuaki Isohata (JPN)
n/a
n/a
n/a
Seichiro Sasaki (JPN)
Kenji Kimihara (JPN)
Notes: Sometime between December 1966 and February 1975, the race date was changed
from December to February. It is assumed that the race was not run for (at least) one calendar year. The women's
race distance has been 10 km since 2004.
Most Wins
(1965/date)
Men
4
Ichio Sato (JPN)
1972-73,1975,1978
Women
No woman has won more than once.
Prize Money
Prize money is not awarded in Japanese road races due to legal restrictions.
Race Time Bias
(sec/km)
Year Men 2016 -3.6 2015 -3.7 2014 -3.8 2013 -2.9 2012 -3.0 2011 -3.1 2010 -1.5 2009 -1.8 2008 -3.4 2007 -2.8 2006 -1.9 2005 -2.2 2004 -3.4 2003 -2.2 2002 -1.6 2001 -2.3 2000 -0.7 1999 -3.6 1998 -1.0 1997 -1.4 1996 -2.2 .... 1993 -3.8 Avgs -2.5
Competitive Level (1990-date)
Year Men 2016 490 2015 428 2014 450 2013 436 2012 457 2011 413 2010 474 2009 438 2008 306 2007 386 2006 313 .... 2003 513 2002 521 2001 499 2000 442 .... 1997 496
Quality Performances through 2019
Men <46:00 3 <46:20 7 <46:40 20 <47:00 65
Race Winners- 10 km
(30 runnings)
29:52 12 Feb
2012 29:37 33:04 13 Feb
2011 30:04 33:18 14 Feb
2010 28:50 32:50 08 Feb
2009 32:38 10 Feb
2008
33:00
11 Feb
2007
32:16
12 Feb
2006
32:48 13 Feb
2005
28:14
31:59
08 Feb
2004
---
33:02
13 Feb
2003
---
33:43 10 Feb
2002
---
33:03
11 Feb
2001
29:00
32:37
13 Feb
2000
29:24
32:44
14 Feb
1999
32:30
08 Feb
1998
33:27
09 Feb
1997
32:08 11 Feb
1996
31:44
12 Feb
1995
---
13 Feb
1994
---
07 Feb
1993
---
09 Feb
1992
---
10 Feb
1991
---
11 Feb
1990
32:33.8
12 Feb
1989
32:16
10 Feb
2019
---
---
32:49
Yuka Takashima-2
11 Feb
2018
---
---
34:05
Sana Ichihara (JPN)
12 Feb
2017
29:44
Takaki Iwamuro (JPN)
33:30
Eijia Miyagi (JPN)
14 Feb
2016
29:56
Kazuki Noda (JPN)
34:21
Hikari Fukuda (JPN)
08 Feb
2015
29:48
Kiyoshi Koga (JPN)
32:33
Yuka Takashima (JPN)
09 Feb
2014
29:47
Eikichi Kazaoka (JPN)
33:23
Fumiko Hashimoto-2
10 Feb
2013
Shuhei Kondo-2
32:54
Keiko Nogami (JPN)
Shuhei Kondo (JPN)
Kayo Sugihara (JPN)
Akira Iwasaki (JPN)
Fumiko Hashimoto (JPN)
Steven Njeri (KEN)
Shino Saito (JPN)
Hiroko Miyauchi (JPN)
Mayumi Fujita (JPN)
Pauline Wanguru (KEN)
Miai Takahashi (JPN)
John Kariuki II (JPN)
Terumi Asoshina (JPN)
n/a
Ai Yamamoto (JPN)
n/a
Mika Okunaka (JPN)
n/a
Satona Oishi (JPN)
Takashi Otsu (JPN)
Yumiko Okamoto (JPN)
Yoshihiro Murata (JPN)
Emiko Kojima (JPN)
Yuko Manabe (JPN)
Yen-mei Wang (CHN)
Ming-xia Wang (CHN)
Masako Chiba (JPN)
n/a
n/a
n/a
n/a
n/a
Miyoko Takahashi-2
Miyoko Takahashi (JPN)
Note: The inaugural year is unknown.
The men's 10 km for 2010-date has been limited to high school students.
Most Wins (1989/date)
Men 2
Shuhei Kondo (JPN)
2012-13
Women
2
Miyoko Takahashi (JPN)
1989-90
Fumiko Hashimoto (JPN)
2011,2014
Prize Money
Prize money is not awarded in Japanese road races due to legal restrictions.
Race Time Bias
(sec/km)
Year Women 2015 -1.6 2014 -3.1 2013 -2.9 2012 -0.6 .... 2010 -2.3 .... 2007 -2.0 2006 -1.6 2005 -2.2 2004 -1.7 2003 +3.2 2002 -0.6 .... 2000 -2.8
1999 -2.6 ....
1997 -1.3 Avgs -1.6
Competitive Level (1990-date)
Year Women
2015 437
2014 373
2013 400
2012 406
2011 430
2010 470
2009 556
Quality Performances
Men <28:20 1 <28:40 1 <29:00 2 <29:20 3 <29:40 8 <30:00 22 Women <32:00 4 <32:30 9 <33:00 53 <33:30 133 <34:00 199
Last Updated on 24 Apr 2019 mp
Contributors: Shigenobu Ota (50), Ken Nakamura (11), Brett Larner (39)


Interface: McuSleep
interface McuSleep
Interface to instruct the MCU to enter a low power state. TEP112
describes how an MCU computes this state and how the Scheduler uses
this interface to manage system power draw.
- Author:
-
Philip Levis
-
Martin Turon<EMAIL_ADDRESS>- Date:
-
Oct 26, 2005
Commands
command void sleep()
Commands - Details
sleep
command void sleep()


Shenmue 3 PC Performance Analysis
by John PapadopoulosAfter more than 18 years, Deep Silver and YsNet have finally released the third part in the Shenmue series. Shenmue 3 uses Unreal Engine 4 so it’s time to benchmark it and see how it performs on the PC platform.
For this PC Performance Analysis, we used an Intel i9 9900K with 16GB of DDR4 at 3600Mhz, AMD’s Radeon RX580 and RX Vega 64, NVIDIA’s RTX 2080Ti, GTX980Ti and GTX690. We also used Windows 10 64-bit, the GeForce driver 441.20 and the Radeon Software Adrenalin 2019 Edition 19.11.3 drivers. NVIDIA has not included any SLI profile for this title, meaning that our GTX690 performed similarly to a single GTX680.
YsNet has not added any graphics settings to tweak, other than a generic quality Preset. PC gamers can choose between Low, Medium, High and Very High. And that’s it. You can also select your resolution and we experienced some crashes when changing resolutions.
Shenmue 3 does not come with any built-in benchmark tool. As such, we’ve decided to benchmark the village area for both our CPU and GPU tests.
The game does not require a high-end CPU. In order to find out how the game scales on multiple CPU threads, we simulated a dual-core, a quad-core and a hexa-core CPU. Even without Hyper Threading, our simulated dual-core system was able to provide a smooth gaming experience.
Our older Intel i7 4930K was also able to provide a 60fps experience. However, this particular CPU was severely limiting our NVIDIA RTX2080Ti at both 1080p and 1440p. Nevertheless, owners of older CPUs will be able to enjoy this game with more than 60fps at all times.
Shenmue 3 also does not require a high-end GPU. At 1080p, most of our graphics cards were able to provide a smooth gaming experience. There were some drops to mid-50s on our AMD Radeon RX580, however it was able to offer an average of 64fps.
Shenmue 3 is also one of those Unreal Engine 4 games that runs better on NVIDIA’s hardware. After all, the performance difference between the GTX980Ti and the RX Vega 64 is not that big. At 1440p, all three of our main graphics cards were able to provide a smooth gaming experience. And as for 4K, our NVIDIA RTX2080Ti was able to offer a constant 60fps experience.
Graphics wise, Shenmue 3 looks cool, mainly due to its art style. The main characters have that CG-Dreamcast look to them which is great (at least in our opinion). They are not the best in-game models, and some NPCs look like dolls, however most of them look good. However, the lip syncing is awful. Furthermore, their animations are a mix bag; some look cool while others are really stiff. On the other hand, the environments are full of details, though we did notice some pop-in issues. Generally speaking, Shenmue 3 is pleasing to the eye. It does not look as great or advanced as Red Dead Redemption 2, however, it’s not atrocious.
In conclusion, Shenmue 3 runs incredibly well on the PC platform. The game does not require a high-end CPU or GPU in order to be enjoyed. However, it suffers from some porting issues. For instance, the default keyboard layout is awful. You also can’t use your mouse in the menus and there aren’t any graphics settings. There is also no way to go back to the main menu or to change your settings once you’ve started playing. Thankfully, there are proper keyboard on-screen prompts, however we strongly suggest using a gamepad.
Enjoy!


para
We are currently working on bringing Para to release with networking and re-released features. Sign up for our mailing list
here
.
close
waterlilies
close
about
close


"BOIL "(rendered “botch” in Deuteronomy 28:27, 35), an aggravated ulcer, as in the case of Hezekiah (2 Kings 20:7; Isaiah 38:21) or of the Egyptians(Exodus 9:9, 10, 11; Deuteronomy 28:27, 35). It designates the disease of Job (2:7), which was probably the black leprosy.
"BOIL "(rendered “botch” in Deuteronomy 28:27, 35), an aggravated ulcer, as in the case of Hezekiah (2 Kings 20:7; Isaiah 38:21) or of the Egyptians(Exodus 9:9, 10, 11; Deuteronomy 28:27, 35). It designates the disease of Job (2:7), which was probably the black leprosy.


I'm a frontend/fullstack developer with six years of experience . I build responsive, high-performance websites, data-visualisations, interactives and web-apps . I mainly code in javascript (angular / react + node.js) and java . I can write solid and well-organized code from scratch, and I have a passion for exploring new and emerging web technologies.
Rahil Sharma
101 , Spaze Privy
Sector 72 , Gurgaon
+918978377336
rahilsharma.github.io
Btech in Computer Science• 2009 - 2013
Class X - 87% • March 2007
Class XII - 88% • March 2009
Senior Software Developer • CountryDelight.in (April 2019 - Current)
Online Milk Delivery Resposibilities : Currently working as front end developer , Completely developed countrydelight.in's front end from scratch using angular 7 and node. Technologies used : Cloud - AWS ( EC2 , S3 , CLOUDFRONT) , Javascript, nodejs, angular 7.
Senior Developer • Talkoot.in (Dec 2015- April 2019)
A social platform for traders and investors . Resposibilities : Worked as full stack developer , Completely developed talkoot.in's front end and backend from scratch using react/redux and parse-server/node js. I also take care of server administration work which includes 3 ec2 servers which contain mongo,mysql,apache and node js servers. Technologies used : Cloud - AWS ( EC2 , S3 , ROUTE 53 , CLOUDFRONT) , Javascript,nodejs,reactjs,redux,python,shell scripting , php , apache, wordpress etc.
Developer • (Bank Of America , Hyderabad April 2015)
Its an inhouse tool where associates can book/review/get reimbursement for their travel expenses. Resposibilities : Worked as UI Developer.Used Foundation framework to make website responsive. Technologies used :html , css , foundation framework , jquery , javascript.
Developer • (Bank Of America , Hyderabad Jan 2015)
Provides testing teams with customer data which is used by them in QA testing. Resposibilities : I am part of the development team. Worked as full stack developer. Technologies used : ASP.net MVC 4, SignalR,Jquery,Ajax,Bootstrap,MySQL.
Developer • (Bank Of America , Hyderabad 2013/2014)
It is a single click record and play QA automation tool based on keyword driven framework. Resposibilities : I am part of the development team. My resposibilities include design,development,unit testing and integration with other systems.Some of the libraries that I used in this project are Windows GDI,user32,AOM (QTP), Excel Interop,OpenXml, and OTA (HP-QC). Languages/ Tools Used : VB.Net , Visual Studio , QTP , QC , vbscript , C# ,Java ,JavaScript ,Eclipse ,Junit ,Selenium.
Developer • Bank Of America , Hyderabad 2014
Key features in the tool : Capture Screenshots using global keyword / mouse hooks , Capture Screenshot using HotKeys / ShortCut keys , Excel/Word Support using OpenXML library , Capture Screenshots of Active Window / or when window changes.
International Journal Of Multidisciplinary Research Academy. (IJMRA) Publication ID – IJMRA 4400 ISSN: 2347-6532
It is a collection of shell scripts that automate the task of doing a fake ap / rouge ap attack . I also provided two solutions to detect the fake ap attacks. Languages : Python , Bash Shell Scripts. Tools Used : SSLStrip,Airmon-ng,WireShark,Airodump,dhcp3 sever,SET toolkit,ettercap
It is a wireless scanner written in python using Scapy Library. Features : Can identify encrypted channels also.Implemented channel hopper to scan whole wireless spectrum.Displays Channel,ssid,bssid,encryption.Fast and Simple.
A bright, talented, ambitious and self-motivated fullstack web developer with a strong technical background who possesses self-discipline and the ability to work with the minimum of supervision. Able to play a key role throughout a sites development to ensure maximum accessibility, customer experience and usability
• Experienced in Frontend Development in HTML, CSS (Twitter Bootstrap).
• Experienced in Javascript: React (Flux/Redux) , AngularJS and jQuery.
• Experienced in cloud services like AWS and Google Cloud Platform
• Experienced in Version Control with Git.
• Familiar with working in Linux and its variants.
• Familiar with programming in Python,Java,Php and C#.
• Familiar with MySQL,mongodb.
For further information or if you have any questions please do not hesitate to contact me on my email provided in my resume.


[1]
User friendly; Many POI missing,bad traffic advise,terrible service.
[2]
When it works, its great; Memory Extremely volatile!!!!


IEEE-754 Javascript Source Code
You can look at and/or download the Javascript source code for the calculators here.
Code for IEEE-754.html
Code for IEEE-754hex32.html
Code for IEEE-754hex64.html