|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object edu.nps.moves.disutil.UdpServer
public class UdpServer
Used in support of PduMulticastReceiver
.
A robust class for establishing a UDP server and manipulating
its listening port and optionally a multicast groups to join.
The UdpServer.Event
s and property change events make
it an appropriate tool in a threaded, GUI application.
It is almost identical in design to the TcpServer class that
should have accompanied this class when you downloaded it.
To start a UDP server, create a new UdpServer and call start():
UdpServer server = new UdpServer(); server.start();
Of course it won't be much help unless you know which port it's listening on and you register as a listener so you'll know when a java.net.DatagramPacket has come in:
server.setPort(1234); server.addUdpServerListener( new UdpServer.Adapter(){ public void udpServerPacketReceived( UdpServer.Event evt ){ DatagramPacket packet = evt.getPacket(); ... } // end packet received });
The server runs on one thread, and all events are fired on that thread.
If you have to offload heavy processing to another thread, be sure to
make a copy of the datagram data array since it will be reused the next
time around. You may use the UdpServer.Event.getPacketAsBytes()
command as a convenient way to make a copy of the byte array.
The full 64KB allowed by the UDP standard is set aside to receive the datagrams, but it's possible that your host platform may truncate that.
The public methods are all synchronized on this, and great care has been taken to avoid deadlocks and race conditions. That being said, there may still be bugs (please contact the author if you find any), and you certainly still have the power to introduce these problems yourself.
It's often handy to have your own class extend this one rather than making an instance field to hold a UdpServer where you'd have to pass along all the setPort(...) methods and so forth.
The supporting UdpServer.Event
, UdpServer.Listener
, and UdpServer.Adapter
classes are static inner classes in this file so that you have only one
file to copy to your project. You're welcome.
This code is released into the Public Domain. Since this is Public Domain, you don't need to worry about licensing, and you can simply copy this UdpServer.java file to your own package and use it as you like. Enjoy. Please consider leaving the following statement here in this code:
This UdpServer class was copied to this project from its source as found at iHarder.net.
UdpServer
,
UdpServer.Adapter
,
UdpServer.Event
,
UdpServer.Listener
| Nested Class Summary | |
|---|---|
class |
UdpServer.Adapter
A helper class that implements all methods of the UdpServer.Listener interface with empty methods. |
static class |
UdpServer.Event
An event representing activity by a UdpServer . |
static interface |
UdpServer.Listener
An interface for listening to events from a UdpServer . |
static class |
UdpServer.State
One of four possible states for the server to be in: |
| Field Summary | |
|---|---|
static java.lang.String |
GROUPS_PROP
The multicast groups property groups used with the property change listeners and the preferences, if a preferences object is given. |
static java.lang.String |
PORT_PROP
The port property port used with the property change listeners and the preferences, if a preferences object is given. |
| Constructor Summary | |
|---|---|
UdpServer()
Constructs a new UdpServer that will listen on the default port 8000 (but not until start() is called). |
|
UdpServer(int port)
Constructs a new UdpServer that will listen on the given port (but not until start() is called). |
|
UdpServer(int port,
java.util.concurrent.ThreadFactory factory)
Constructs a new UdpServer that will listen on the given port (but not until start() is called). |
| Method Summary | |
|---|---|
void |
addPropertyChangeListener(java.beans.PropertyChangeListener listener)
Add a property listener. |
void |
addPropertyChangeListener(java.lang.String property,
java.beans.PropertyChangeListener listener)
Add a property listener for the named property. |
void |
addUdpServerListener(UdpServer.Listener l)
Adds a UdpServer.Listener . |
void |
fireProperties()
Fires property chagne events for all current values setting the old value to null and new value to the current. |
protected void |
firePropertyChange(java.lang.String prop,
java.lang.Object oldVal,
java.lang.Object newVal)
Fire a property change event on the current thread. |
void |
fireState()
Fires an event declaring the current state of the server. |
protected void |
fireUdpServerPacketReceived()
Fires event on calling thread. |
protected void |
fireUdpServerStateChanged()
Fires event on calling thread. |
java.lang.String |
getGroups()
Returns the multicast groups to which the server has joined. |
static java.util.logging.Level |
getLoggingLevel()
Static method returning the logging level using Java's java.util.logging package. |
java.net.DatagramPacket |
getPacket()
Returns the last DatagramPacket received. |
int |
getPort()
Returns the port on which the server is or will be listening. |
int |
getReceiveBufferSize()
Returns the receive buffer for the underlying MulticastSocket if the server is currently running (otherwise there is no MulticastSocket to query). |
UdpServer.State |
getState()
Returns the current state of the server, one of STOPPED, STARTING, or STARTED. |
protected void |
recordState(UdpServer.State state)
Records (sets) the state and fires an event. |
void |
removePropertyChangeListener(java.beans.PropertyChangeListener listener)
Remove a property listener. |
void |
removePropertyChangeListener(java.lang.String property,
java.beans.PropertyChangeListener listener)
Remove a property listener for the named property. |
void |
removeUdpServerListener(UdpServer.Listener l)
Removes a UdpServer.Listener . |
void |
reset()
Resets the server, if it is running, otherwise does nothing. |
protected void |
runServer()
This method starts up and listens indefinitely for UDP packets. |
void |
setGroups(java.lang.String group)
Sets the new multicast groups to which the server will join. |
static void |
setLoggingLevel(java.util.logging.Level level)
Static method to set the logging level using Java's java.util.logging package. |
void |
setPort(int port)
Sets the new port on which the server will attempt to listen. |
void |
setReceiveBufferSize(int size)
Recommends a receive buffer size for the underlying MulticastSocket. |
void |
start()
Attempts to start the server listening and returns immediately. |
void |
stop()
Attempts to stop the server, if the server is in the STARTED state, and returns immediately. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final java.lang.String PORT_PROP
public static final java.lang.String GROUPS_PROP
| Constructor Detail |
|---|
public UdpServer()
start()
is called).
The I/O thread will not be in daemon mode.
public UdpServer(int port)
start()
is called).
The I/O thread will not be in daemon mode.
port
- The initial port on which to listenpublic UdpServer(int port, java.util.concurrent.ThreadFactory factory)
start()
is called). The provided
ThreadFactory will be used when starting and running the server.
port
- The initial port on which to listenfactory
- The thread factory used to generate a thread to run the server| Method Detail |
|---|
public void start()
UdpServer.Listener
public void stop()
UdpServer.Listener
public UdpServer.State getState()
protected void recordState(UdpServer.State state)
state
- The new state of the serverpublic void fireState()
public void reset()
protected void runServer()
public java.net.DatagramPacket getPacket()
public int getReceiveBufferSize() throws java.net.SocketException
java.net.SocketException
public void setReceiveBufferSize(int size) throws java.net.SocketException
size
-
java.net.SocketException
public int getPort()
public void setPort(int port)
port
- the new port for listening
java.lang.IllegalArgumentException
- if port is outside 0..65535public java.lang.String getGroups()
public void setGroups(java.lang.String group)
Sets the new multicast groups to which the server will join. If the server is already listening, then it will attempt to restart, generating start and stop events.
The list of groups may be whitespace- and/or comma-separated. When the server starts up (or restarts), the list will be parsed, and only legitimate groups will actually be joined.
May be null.
group
- the new groups to joinpublic void addUdpServerListener(UdpServer.Listener l)
UdpServer.Listener
.
l
- the UdpServer.Listenerpublic void removeUdpServerListener(UdpServer.Listener l)
UdpServer.Listener
.
l
- the UdpServer.Listenerprotected void fireUdpServerPacketReceived()
protected void fireUdpServerStateChanged()
public void fireProperties()
protected void firePropertyChange(java.lang.String prop, java.lang.Object oldVal, java.lang.Object newVal)
prop
- name of propertyoldVal
- old valuenewVal
- new valuepublic void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
listener
- the property change listenerpublic void addPropertyChangeListener(java.lang.String property, java.beans.PropertyChangeListener listener)
property
- the sole property name for which to registerlistener
- the property change listenerpublic void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
listener
- the property change listenerpublic void removePropertyChangeListener(java.lang.String property, java.beans.PropertyChangeListener listener)
property
- the sole property name for which to stop receiving eventslistener
- the property change listenerpublic static void setLoggingLevel(java.util.logging.Level level)
UdpServer.setLoggingLevel(Level.OFF);
.
level
- the new logging levelpublic static java.util.logging.Level getLoggingLevel()
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


To analyse the relationship between the main page and the ones that stemmed from it, Using Wikimedia APIs we wrote a small sketch in processing that, starting from the page “Family Planning” crawls all the “Main article” links.
Kohlschütter, Christian, Peter Fankhauser, and Wolfgang Nejdl. "Boilerplate detection using shallow text features." Proceedings of the third ACM international conference on Web search and data mining. ACM, 2010.The results are visualized with the software GEPHI, an open-source network analysis and visualization software package, with the use of its force-based algorithm, ForceAtlas2, we produced a networks of the articles connected to “Family planning”.
Sébastien Heymann and Bénédicte Le Grand. “Exploratory Network Analysis: Visualization and Interaction” to appear in Hocine Cherifi (editor), Complex Networks and their Applications, Cambridge University Press. Bastian, Mathieu, Sebastien Heymann, and Mathieu Jacomy. "Gephi: an open source software for exploring and manipulating networks." ICWSM. Jacomy, Mathieu, et al. "ForceAtlas2, A Continuous Graph Layout Algorithm for Handy Network Visualization.The resulting n-grams have been visualized with a slopegraph model that allow to make several visual comparisons along the different categories of documents. All vertical lists in the diagram contain the same n-grams, thus highlighting the hierarchy of n-grams in the different categories and the specific number of occurrences associated to them, as well as the changing configuration when comparing TF and TFIDF n-grams.


Changelog
1.3.5 on 2020-05-12
- Fixes custom class ordering (credit to Venyii)
1.3.4 on 2020-05-01
- Adds support for Settings (credit to Venyii)
- Adds support for @apply statement sorting (credit to Venyii)
- Adds confirmation dialogue to settings replacement
- Adds support for Tailwind 1.4.1
1.3.2 on 2020-02-25
- Adding support for new Tailwindcss 2.0 classes
1.3.1 on 2019-12-16
- Changing CURRENT-EAP-SNAPSHOT to list 2019.3 instead
1.3.0 on 2019-12-12
- Fixing compatibility with newer versions of intellij IDE's
- Adjusting build properties
- Adding changelog file for patchPluginXml
1.2.0 on 2019-12-05
- Fixed issue with tailwind classes containing a slash not being found
1.1.0 on 2019-11-26
- Initial release of the Tailwind Formatter plugin.


ROMEO AND JULIET A film review by Ivana Redwine Copyright 1996 Ivana Redwine
Starring: Leonardo DiCaprio, Claire Danes, Brian Dennehy, John Leguizamo, Pete Postlethwaite, Paul Sorvino, Diane Venora. Directed by Baz Luhrmann. Screenplay: Craig Pearce and Baz Luhrmann. Producers: Gabriella Martinelli, Baz Luhrmann. MPAA Rating PG-13 (Adult Themes, Violence). Running Time 121 Minutes.
Visually dense with a well-integrated musical score that runs the gamut from rock to classical, Baz Luhrmann's film WILLIAM SHAKESPEARE'S ROMEO AND JULIET took me for a thrilling ride on an operatic tidal wave of emotion. I was almost overwhelmed by the sheer force of this powerful film, which I found to be a brilliantly innovative work of sheer cinematic artistry. It is a film that demands a lot from its audience and elicits a strong reaction of love or hate or a combination of the two.
Although Luhrmann has generally preserved Shakespeare's language, it is bold imagery and music that drive the film more than the words spoken by the actors. Also, the setting is changed from 14th-century Verona, Italy, to a fictional composite 20th-century city named Verona Beach, a creation that is a surreal nightmare wrought wholly from Luhrmann's imagination. To my mind, this film is as much Luhrmann's creation as it is the Bard's. I realize that Shakespeare's works are revered texts and to play fast and loose with them is risky business. Shakespeare purists may disagree, but what matters is that Luhrmann pulls his interpretation off brilliantly. However, Luhrmann has changed enough here that I would not blame anyone for seeing this film as a work separate from Shakespeare, yet closely related to it. While the film has been released with the title WILLIAM SHAKESPEARE'S ROMEO AND JULIET, presumably for purposes of name recognition, titles like VERONA BEACH or BAZ LUHRMANN'S ROMEO AND JULIET would be more fitting.
Framed by the matrix of this film's unique vision, the essential plot elements of Shakespeare's tale remain basically intact. Two of the leading families of Verona Beach, the Montagues and the Capulets, are bitter enemies. Romeo (Leonardo DiCaprio), a Montague, crashes a costume party at the Capulet mansion where he falls in love with Juliet (Claire Danes), unaware that she is the host's daughter. Soon after Romeo and Juliet are secretly married, Romeo's friend Mercutio (Harold Perrineau) is killed by Juliet's cousin. Enraged by the death of his friend, Romeo kills Tybalt (John Leguizamo). As a result, Romeo is banished from Verona Beach. Juliet's parents have not been told that she has married Romeo, and they put her under tremendous pressure to marry Paris. (In the film Paris is cleverly introduced via a magazine cover as bachelor of the year.) Desperately trying to avoid this union, Juliet takes a potion that mimics death with a deep sleep, and Friar Lawrence (Pete Postlethwaite) sends Romeo a message about Juliet's ruse. (The film wittily has the message sent by a courier service named "Post Haste.") Leaving exile without receiving the Post Haste dispatch, Romeo goes to the church where the unconscious Juliet lies in a casket. Then mistakenly thinking her dead, he takes poison in despair. Juliet awakens just as the poison starts to take effect on Romeo. She takes Romeo's gun (not a dagger as in the original Shakespeare) and commits suicide. Luhrmann's change of weapon makes it a bloodier and more viscerally violent end. The image of the blood-spattered bodies of the lovers nestled together as the film nears its end is a particularly gruesome sight.
Baz Luhrmann is a daring filmmaker with an eclectic style, which makes for some vividly creative and memorable scenes. Verona Beach is a place so fantastic that it could exist only in a parallel universe; yet it is beset with many of the same problems that plague modern life, including urban violence and a media that blitzes the senses with a barrage of information. Our first hint of this parallel world comes when the film begins with a television screen that frames a newscaster who delivers the prologue in the same calm tone in which we are accustomed to hearing the news of the tragedies of modern life.
There is a witty scene set in a gas station where insults are traded between the "Montague boys" and some of the younger members of the Capulet clan; here there are echoes of WEST SIDE STORY along with the film language of contemporary action movies. In my opinion, this scene would be merely derivative in the hands of a less competent director; instead, it turns into a scintillating synthesis.
The intensity and virtuosity of the costume ball sequence set at the Capulet mansion is a tour de force. Romeo enters the party while under the influence of a pill given to him earlier by Mercutio, and the kaleidoscopic array of vivid imagery and daring camera work reflects Romeo's altered state of consciousness. Soon he is overwhelmed by both the party and the effects of the drug and makes an exit to the men's room. Trying to sober himself up, he places his face in a basin of water. He comes up for air, starts examining fish in an aquarium, and sees Juliet through the aquarium's glass. Romeo and Juliet seem to fall in love while watching the fish and each other, and this moment in the film struck me as both lyrically beautiful and hauntingly strange. The sequence is reminiscent of Federico Fellini and Ken Russell, while remaining something that is distinctively Luhrmann's own.
The film's treatment of the famous balcony scene departs radically from the traditional by having the young lovers fall into an adjacent swimming pool and deliver much of their dialog while treading water. This is daring, but I am not sure it entirely worked; I missed some of the power of the more traditional interpretations of the scene. Still, I thought it was a fresh and engaging scene with a charm all its own.
Three main motifs run through the film like a series of interrelated fugues--water, guns, and religious iconography--creating a complicated visual tapestry. These motifs can be interpreted on any number of levels: Jungian, Freudian, personal. While there seems no simple way to interpret them, I thought that the motifs added a touch to the film that was both surreal and at the same time intensely real; they seemed to belong to the world between wakefulness and sleep. However, I concede that this often had the effect of making the film harder to follow. In addition, sometimes these motifs were deliberately provocative, making the film more unsettling. In particular, I found that guns--sleekly designed and seductively photographed--seemed almost omnipresent, but they also fit the artistic vision of the film and were integral to the nightmarish violence that permeated Verona Beach. In addition, some viewers might find Luhrmann's freewheeling approach to religious imagery irreverent. However, in general I thought the use of these three motifs made the film more dynamic, so I gave the film artistic license on the parts that disturbed me.
There was one thing that Luhrmann did that seemed to me to be a touch of sheer genius. When the "star-crossed" lovers are alone on the screen, the bombardment of music and surreal imagery seems to fade away: it is as if the truth of their young love gives them a temporary refuge from the horror of Verona Beach.
The performances in the film are surprisingly good, although they are not the kind of great performances given in film adaptations of Shakespeare featuring actors such as Ian McKellen, Kenneth Branagh, or Laurence Olivier. There is less emphasis on Shakespeare's language in this film, so if the performances cannot match the perfection of trained Shakespearean actors, it is not as much of a distraction as one might think. Claire Danes and Leonardo DiCaprio still manage to shine; the innocence and exuberance of their actual youth makes them magic on the screen.
Two of the supporting performances are particularly good. Harold Perrineau's Mercutio is charismatic throughout the film, and at times he is superb. Perrineau manages to steal the show as a dazzling drag diva in the costume ball scene. John Leguizamo gives a powerful performance as Tybalt; he projects some of the malignant malevolence of pure hate into the role.
The intensity level of this film is overwhelming at times, and that is what struck me as both the film's strength and its weakness. This is a highly stylized film, and I found that style sometimes interfered with substance. There were times in the film when I yearned for greater focus on the poetic power of the Bard's words. This is not a perfect film, but it is a brave and often brilliant one. A deliberately daring and disturbing interpretation of Shakespeare's work, I must admit that it is not for everyone. But I think it is easily one of the best and most important films of this year. This is a film that will be watched, studied, and its merits debated for years to come.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Chapter 8 Dependency utilities
When creating a new template, you sometimes need to import custom HTML dependencies are not available in shiny. Fortunately, this is not aproblem using htmltools!
8.1 The dirty approach
This approach is dirty since it is not easily re-usable by others. Instead, we prefer a packaging approach, like in the next section.
Let’s consider the following example. I want to include a bootstrap 4 card in a shiny app. Briefly, Bootstrap is the most popular HTML/CSS/JS framework to develop websites and web apps. This example is taken from an interesting question here. The naive approach would be to include the HTML code directly in the app code
# we create the card function before
my_card <- function(...) {
withTags(
div(
class = "card border-success mb-3",
div(class = "card-header bg-transparent border-success"),
div(
class = "card-body text-success",
h3(class = "card-title", "title"),
p(class = "card-text", ...)
),
div(class = "card-footer bg-transparent border-success", "footer")
)
)
}
# we build our app
shinyApp(
ui = fluidPage(
fluidRow(
column(
width = 6,
align = "center",
br(),
my_card("blablabla. PouetPouet Pouet.")
)
)
),
server = function(input, output) {}
)
and unfortunately see that nothing is displayed. If you remember, this was expected since
shiny does not contain bootstrap 4 dependencies and this card is unfortunately a
bootstrap 4 object. Don’t panic! Load the necessary css to display
this card (if required, we could include the javascript as well). We could use either
includeCSS()
, tags$head(tags$link(rel = "stylesheet", type = "text/css", href = "custom.css"))
. See
more here.
shinyApp(
ui = fluidPage(
# load the css code
includeCSS(path = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"),
fluidRow(
column(
width = 6,
align = "center",
br(),
my_card("blablabla. PouetPouet Pouet.")
)
)
),
server = function(input, output) {}
)
The card may seem ugly but at least it is displayed. Fear not, we will fix the aesthetics later.
8.2 The clean approach
We will use the htmlDependency
and attachDependencies
functions from htmltools.
The htmlDependency takes several arguments:
- the name of your dependency
- the version (useful to remember on which version it is built upon)
- a path to the dependency (can be a CDN or a local folder)
- script and stylesheet to respectively pass css and scripts
# handle dependency
card_css <- "bootstrap.min.css"
bs4_card_dep <- function() {
htmlDependency(
name = "bs4_card",
version = "1.0",
src = c(href = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/"),
stylesheet = card_css
)
}
We create the card tag and give it the bootstrap 4 dependency through the attachDependencies()
function. In recent version of htmltools, we may simply use
tagList(tag, deps)
instead.
# create the card
my_card <- function(...) {
cardTag <- withTags(
div(
class = "card border-success mb-3",
div(class = "card-header bg-transparent border-success"),
div(
class = "card-body text-success",
h3(class = "card-title", "title"),
p(class = "card-text", ...)
),
div(class = "card-footer bg-transparent border-success", "footer")
)
)
# attach dependencies (old way)
# htmltools::attachDependencies(cardTag, bs4_card_dep())
# simpler way
tagList(cardTag, bs4_card_dep())
}
We finally run our app:
# run shiny app
ui <- fluidPage(
title = "Hello Shiny!",
fluidRow(
column(
width = 6,
align = "center",
br(),
my_card("blablabla. PouetPouet Pouet.")
)
)
)
shinyApp(ui, server = function(input, output) { })
With this approach, you could develop a package of custom dependencies that people could use when they need to add custom elements in shiny.
8.3 Another example: Importing HTML dependencies from other packages
The shinydashboard package helps to design dashboards with shiny. In the following, we would like to integrate the box component in a classic Shiny App (without the dashboard layout). However, if you try to include the Shinydashboard box tag, you will notice that nothing is displayed since Shiny does not have shinydashboard dependencies. Fortunately htmltools contains a function, namely findDependencies
that looks for all dependencies attached to a tag. Before going futher, let’s define the basic skeleton of a shinydashboard:
shinyApp(
ui = dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(),
title = "Dashboard example"
),
server = function(input, output) { }
)
There are numerous details associated with shinydashboard that we will unfortunately not go into. If you are interested in learning more, please help yourself. The key point here is the main wrapper function dashboardPage. The fluidPage is another wrapper function that most are already familiar with. We apply findDependencies
on dashboardPage
.
deps <- findDependencies(
dashboardPage(
header = dashboardHeader(),
sidebar = dashboardSidebar(),
body = dashboardBody()
)
)
deps
deps is a list containing four dependencies:
- Font Awesome handles icons
- Bootstrap is the main HTML/CSS/JS template. Importantly, please note the version 3.3.7, whereas the current is 4.3.1
- AdminLTE is the dependency containg HTML/CSS/JS related to the admin template. It is closely linked to Bootstrap 3.
- shinydashboard, the CSS and javascript necessary for shinydashboard to work properly. In practice, integrating custom HTML templates to shiny does not usually work out of the box for many reasons (Explain why!) and some modifications are necessary.
[[1]]
List of 10
$ name : chr "font-awesome"
$ version : chr "5.3.1"
$ src :List of 1
..$ file: chr "www/shared/fontawesome"
$ meta : NULL
$ script : NULL
$ stylesheet: chr [1:2] "css/all.min.css" "css/v4-shims.min.css"
$ head : NULL
$ attachment: NULL
$ package : chr "shiny"
$ all_files : logi TRUE
- attr(*, "class")= chr "html_dependency"
[[2]]
List of 10
$ name : chr "bootstrap"
$ version : chr "3.3.7"
$ src :List of 2
..$ href: chr "shared/bootstrap"
..$ file: chr "/Library/Frameworks/R.framework/Versions/3.5/Resources/library/shiny/www/shared/bootstrap"
$ meta :List of 1
..$ viewport: chr "width=device-width, initial-scale=1"
$ script : chr [1:3] "js/bootstrap.min.js" "shim/html5shiv.min.js" "shim/respond.min.js"
$ stylesheet: chr "css/bootstrap.min.css"
$ head : NULL
$ attachment: NULL
$ package : NULL
$ all_files : logi TRUE
- attr(*, "class")= chr "html_dependency"
[[3]]
List of 10
$ name : chr "AdminLTE"
$ version : chr "2.0.6"
$ src :List of 1
..$ file: chr "/Library/Frameworks/R.framework/Versions/3.5/Resources/library/shinydashboard/AdminLTE"
$ meta : NULL
$ script : chr "app.min.js"
$ stylesheet: chr [1:2] "AdminLTE.min.css" "_all-skins.min.css"
$ head : NULL
$ attachment: NULL
$ package : NULL
$ all_files : logi TRUE
- attr(*, "class")= chr "html_dependency"
[[4]]
List of 10
$ name : chr "shinydashboard"
$ version : chr "0.7.1"
$ src :List of 1
..$ file: chr "/Library/Frameworks/R.framework/Versions/3.5/Resources/library/shinydashboard"
$ meta : NULL
$ script : chr "shinydashboard.min.js"
$ stylesheet: chr "shinydashboard.css"
$ head : NULL
$ attachment: NULL
$ package : NULL
$ all_files : logi TRUE
- attr(*, "class")= chr "html_dependency"
Below, we attach the dependencies to the box
with tagList
, as shown above. Notice that our custom box
does not contain all parameters from shinydashboard, which is actually ok at this time.
my_box <- function(title, status) {
tagList(box(title = title, status = status), deps)
}
ui <- fluidPage(
titlePanel("Shiny with a box"),
my_box(title = "My box", status = "danger"),
)
server <- function(input, output) {}
shinyApp(ui, server)
You now have limitless possibilities! Interestingly, this same approach is the basis of shinyWidgets for the useBs4Dash
function and other related tools.
8.4 Suppress dependencies
In rare cases, you may need to remove an existing conflicting dependency. The suppressDependencies
function allows users to perform this. For instance, shiny.semantic built on top of
semantic ui is not compatible with Bootstrap. Below, we remove the AdminLTE dependency
from a shinydashboard page and nothing is displayed (as expected):


The Tragedy of Julius Caesar
by William Shakespeare
Act 3, Scene 3
Additional Information
- Year Published: 0
- Language: English
- Country of Origin: England
- Source: White, R.G. ed. The Complete Works of William Shakespeare. New York: Sully and Kleinteich.
-
Readability:
- Flesch–Kincaid Level: 11.0
- Word Count: 318
- Genre: Tragedy
- Keywords: envy, fate, free will, power
- ✎ Cite This
Downloads
SCENE III. The same. A street.
[Enter Cinna, the poet.]
CINNA.
I dreamt to-night that I did feast with Caesar,
And things unluckily charge my fantasy:
I have no will to wander forth of doors,
Yet something leads me forth.
[Enter Citizens.]
FIRST CITIZEN.
What is your name?
SECOND CITIZEN.
Whither are you going?
THIRD CITIZEN.
Where do you dwell?
FOURTH CITIZEN.
Are you a married man or a bachelor?
SECOND CITIZEN.
Answer every man directly.
FIRST CITIZEN.
Ay, and briefly.
FOURTH CITIZEN.
Ay, and wisely.
THIRD CITIZEN.
Ay, and truly; you were best.
CINNA.
What is my name? Whither am I going? Where do I dwell? Am I
a married man or a bachelor? Then, to answer every man directly
and briefly, wisely and truly. Wisely I say I am a bachelor.
SECOND CITIZEN.
That’s as much as to say they are fools that marry; you’ll bear
me a bang for that, I fear. Proceed; directly.
CINNA.
Directly, I am going to Caesar’s funeral.
FIRST CITIZEN.
As a friend, or an enemy?
CINNA.
As a friend.
SECOND CITIZEN.
That matter is answered directly.
FOURTH CITIZEN.
For your dwelling,—briefly.
CINNA.
Briefly, I dwell by the Capitol.
THIRD CITIZEN.
Your name, sir, truly.
CINNA.
Truly, my name is Cinna.
FIRST CITIZEN.
Tear him to pieces! he’s a conspirator.
CINNA.
I am Cinna the poet, I am Cinna the poet.
FOURTH CITIZEN.
Tear him for his bad verses, tear him for his bad verses.
CINNA.
I am not Cinna the conspirator.
FOURTH CITIZEN.
It is no matter, his name’s Cinna; pluck but his
name out of his heart, and turn him going.
THIRD CITIZEN.
Tear him, tear him! Come; brands, ho! firebrands. To
Brutus’, to Cassius’; burn all. Some to Decius’ house, and some
to Casca’s, some to Ligarius’: away, go!
[Exeunt.]


Keyboard operation:
ARROW: Move
Z: OK/fire
SHIFT: Slow down
ESC: Reset
Gamepad operation:
D-Pad: Move
A: OK/fire
X: Slow down
Y: Reset
Sounds:
music
(
CC0
)
shot sound
(
CC0
)
explosion Sound
(
CC0
)
Source code:
https://github.com/fal-works/broker-sample


New Zealand volcano: Terrified tourists run for cover as eruption kills five
Dramatic footage shows panic on a tour boat where a man repeatedly yells "go inside" as a volcano on New Zealand's White Island erupts and sends a giant ash cloud billowing over the water
by Chris Kitching, https://www.mirror.co.uk/authors/chris-kitching/Terrified holidaymakers ran for cover as a volcano erupted and sent an ash cloud billowing dangerously close to a tour boat.

The vessel was just off New Zealand's White Island when the volcano exploded just after 2pm local time on Monday, killing at least five people, injuring up to 20 and leaving several missing.
Tourists were walking inside the crater when the volcano began spewing rocks and an ash cloud that extended 12,000ft into the blue sky.
 Email<EMAIL_ADDRESS>Police believe less than 50 people were on the island, which is home to New Zealand's most active volcano.
At least 23 people - some of them believed to be tourists from the Ovation of the Seas cruise ship - were rescued.
Michael Schade, an engineering manager from San Francisco, was one of the tourists who made it off the island minutes before the eruption.
In a video Schade posted on Twitter as he sped away from the island on a boat, a huge plume of white ash soars into the sky as a group of frightened tourists huddles close to the shore.
He said: "This is so hard to believe. Our whole tour group were literally standing at the edge of the main crater not 30 minutes before."
Tourists were seen walking inside the crater just moments before the eruption.
A crater rim webcam owned and operated by New Zealand science agency GeoNet shows groups of people walking toward and away from the rim inside the crater, from which white vapour constantly billows.
At 2pm the crater rim camera catches a group of people - tiny specks in relation to the vast volcano - right at the edge of the rim.
At 2.10pm - just a minute before the eruption - the group is headed away from the rim, following a well-worn track across the crater.
It is understood that about half of those on the island at the time were from Australia.
Prime Minister Jacinda Ardern told reporters: "We know that there were a number of tourists on or around the island at the time, both New Zealanders and visitors from overseas.
"I know there will be a huge amount of concern and anxiety for those who had loved ones on or around the island at the time. I can assure them that police are doing everything they can."
It was too dangerous for police and rescuers to set foot on the island, which was covered in ash and volcanic material.
The death toll was expected to rise.
The White Island volcano's last fatal eruption was in 1914, when it killed 12 sulphur miners.
There was a short-lived eruption in April 2016.
White Island became a private scenic reserve in 1953, and daily tours allow more than 10,000 people to visit the volcano every year.


If you are a Shopify entrepreneur with an eCommerce store already set up and you’ re now simply looking for some expert support with small fixes and tweaks to help you optimize your online presence, then you’ve come to the right place.
Our team of eCommerce experts is always available to provide you with the most reliable recommendations and tips for the perfect store set up and handle small task requests.
What is a small task?
A small task is any web page design, development or app support related job that usually takes less than an hour to complete.
A few examples of small tasks that we can gladly do for you are:
This list is not exhaustive, so do not hesitate to contact us and find out if your request qualifies as a small Shopify task. We’ll be more than happy to assist you.
Build a thriving eCommerce business and avoid common mistakes by trusting our team of experts.
With a super quick response time and excellent quality, you’ll have your small tasks ready in a whiz.


Player Name
Your Role is
Show
{{prole}} + {{counter}}
Your not in team
Playing Team
Not yet selected anyone
Group 1
Group 1
Group 1
Play Ground
Project Description
Promote
Block
Vote Added
Results
Not yet started
Promoter
Draw
Trailers


Please enter the email address of your account
You reset password request has been submitted. Please check your email for further instructions.


| internal class | TokenMap |
| public int | GetTokenId(const String<uchar>& tokenName) |
| public String<uchar> | GetTokenInfo(int tokenId) |
| public String<uchar> | GetTokenName(int tokenId) |
| public const int | AMP = 13 |
| public const int | AST = 14 |
| public const int | AT = 8 |
| public const int | BAR = 20 |
| public const int | CARET = 21 |
| public const int | CHAR = 29 |
| public const int | CHAR_CONSTANT = 3 |
| public const int | CLSID_CONSTANT = 5 |
| public const int | COMMA = 28 |
| public const int | DECIMAL_CONSTANT = 1 |
| public const int | DOLLAR = 12 |
| public const int | DOT = 22 |
| public const int | END = 0 |
| public const int | HEX_CONSTANT = 2 |
| public const int | LOCAL_SYMBOL = 6 |
| public const int | LPAREN = 25 |
| public const int | MINUS = 10 |
| public const int | NEWLINE = 24 |
| public const int | PERCENT = 17 |
| public const int | PLUS = 9 |
| public const int | RPAREN = 26 |
| public const int | SEMICOLON = 27 |
| public const int | SHIFT_LEFT = 18 |
| public const int | SHIFT_RIGHT = 19 |
| public const int | SLASH = 16 |
| public const int | SLASHSLASH = 15 |
| public const int | SPACE = 23 |
| public const int | STRING_CONSTANT = 4 |
| public const int | SYMBOL = 7 |
| public const int | TILDE = 11 |


'A coach's suitcase is always ready,' says under-pressure Ancelotti
by Pulse News Agency International by AFPUnder-pressure Napoli coach Carlo Ancelotti said "a coach's suitcase is always ready" ahead of Tuesday's crunch final Champions League group game against Genk.
The Italian side host the Belgian outfit at the Stadio San Paolo looking to end their nine-match winless streak and book their place in the Champions League last 16.
The Serie A runners-up are seventh in the Italian league, with their last win coming in October's Champions League victory at Salzburg.
"The suitcase of a coach is always ready, you can never unpack it," said the former Chelsea, Paris Saint-Germain, Real Madrid and Bayern Munich boss on Tuesday.
"I think that for a coach to be questioned in this kind of situation is completely normal," he continued amid reports former AC Milan coach Gennaro Gattuso was ready to take his place.
"I'm ready, it's an experience I've already experienced in the past. It doesn't scare me, and it doesn't worry me that the club could sack me or that I could leave," he added.
Napoli beat European champions Liverpool in their opening Group E clash before drawing at Anfield in November, but still need a point in their final game to qualify for the knock-out stages.
"I can't pretend, the team doesn't give what it could give," Ancelotti said.
"In Europe, we have seen another Napoli, the one I would like to see in the league as well. I am looking for solutions to get out of this difficult period," he added.
Ancelotti, who has won three Champions League titles as a coach, twice with AC Milan and once with Real Madrid, denied his team had a "psychological block".
"The team is worried because of what they cannot do. They gave the best of themselves against Liverpool, when the weight of responsibility was less," he said.
"I have the feeling that tomorrow we will have a great game and we will go into the next round and hopefully in first place."
Napoli are second in their group, one point behind leaders Liverpool who travel to Salzburg, who are third two points behind the Italians.
ea/iwd


Product Name:
{{product.name}}
Product Price:
{{product.price}}
Product discount:
{{product.special_discount}} %
Account Balance:
{{balance.balance}}
Special Discount amount:
{{special_discount_amount}}
Price Discount:
{{price_discount}}
Final Price:
{{final_amount}}
Remaining Balance:
{{balance.balance - final_amount}}


Gelfand: Chunk 7 - Pascal's Triangle.
January 5, 2017
Pascal’s Triangle
The introduciton to the Pascal’s triangle section of Gelfand has a lot of explanation, combining and extending our previous topics of Powers, Square-of-a-Sum and Difference of Squares up to lofty heights of cubes and beyond. He clearly wants you to mentally arrive at the triangle via the process of constructing it ourselves so you’d better brace yourself and get to it. The pay-back? You can use Pascal’s triangle to do some otherwise-difficult power-work by hand.
Let’s crack into the first problem itself. Then we can start to discuss the ramifications.
Problem 82 (a) Compute
Problem 82 (b) Compute
This is all going swimmingly, and we can see a nice symmetrical result emerging, with the co-efficients of our result-elements echoing the numbers in our nice symmetrical triangle.
In fact, if you look back at the triangle, not only go we get co-efficient benefits, but you can also see that the ultimate output we’re getting in both cases is the same as the numbers in the row in question.
I.e. the row for and our answer is .
When you think about how all this is working, it all kind of makes sense that this would be the outcome too - as we work through, we’re repeatedly raising to a decreasing power, and then multiplying this by the co-efficient value. So in that case it’s little surprise that comes out as in the fourth row working above. And it’s doing the same thing in all positions, but with different position-relevant powers, and corresponding co-efficients.
Awesome.
Also, it’s about to break though as you might suspect. Let’s look at .
Problem 83 (c) Compute
Hey! What happened? Because the two co-efficients in the centre are greater than $9$ we’re ending up with elements of our sum at the end that burst right out of their position in the decimal number system and get carried over to the next column. No more pretty echo of Pascal’s Triangle. But it still makes sense, and there is a nice shortcut in an online answer from Adrian Durham which makes how we get our new answer clear again (I’ve altered this a tiny bit from Durham’s, but the main aspects are all his):
It’s now pretty clear how this still follows the general way of working of our earlier (and simpler) powers, but now with a little carrying thrown into the mix.
What About Difference of Squares and Beyond?
So we just saw some beauty behind the Square of a Sum and beyond (), but what about Difference of Squares (etc)?
There is a trick here too. Think:
Which means we can just take everything we just computed, and apply Difference of Squares to it
Etc. etc.
Note: remember, when you raise a negative number to an even power, it changes to be positive, but when you raise it to an odd power, it stays as negative. (You might realise at this point that this means all even powers are positive, and you’d be right, but we’re jumping ahead…)
Summing the Rows in Pascal’s Triangle
What happens when you sum all the values in each row?
Row 1:
Row 2:
Row 3:
Row 4:
Row 5:
Row 6:
Row 7:
Row 8:
Etc.
The sums are all powers of . And the power is the same as the row number minus . E.g. Row 3 .
So why is this? That’s precisely the next question Gelfand wants us to work on, and Durham has another nice solution upon which this example is based:
What’s he done here? What’s the line of reasoning? It’s terribly simple really. Remember how, at the start of this post we simplified by breaking the into so we could use the square of sums expansion? We’ll we’re doing the same here, but now we’re splitting into .
We also know that when we have as one of the input into our expansaion that things get quite simple. With two s it’s simple too, but the position effect that the powers of give us is gone. Now we’re just ending up adding our co-efficients.
That’s what you see here, and why we end up with a sum that looks a lot like (because its exactly the same as) the sum on the individual numbers in the relevant row of Pascal’s triangle.
So What Happens When ?
Let’s do it first with and
If we pause here it appears as if a pattern is emerging:
Now let’s do it with algebra
And we already know that is , so our answer for everything is
And if we finally replace the with to complete the generalisation
Where is the row in pascals triangle and is the input value.
And now to check, if we put in and
Bingo!
And just to link back to the simpler examples we saw before, what about when ?
BingoBingo!
The Key Thing to Remember
There is always a takeaway from every bit of Gelfand. It seems (and Durham echos it) that the thing to remember here is about the sum of the co-efficients on a given row of Pascal’s triangle. I.e. , , etc. These are equal to , where is equal to the row number.
Let’s say it again
“the sum of the co-efficients in Pascal’s Triangle are always , where is the row number”
Nice.
Done.


{% extends 'base.html' %} {% block body %}
Please tell us how much the following features matter to you.
Submit
{%endblock%}


Leaflet TimeDimension example 8
SOCIB HF Radar with surface drifters trajectories
Code
Example 7: SOCIB WMOP Ocean Forecast
Example 9: GeoJSON layers with times property


#assign l2caching_ignite = "true">
Apache Ignite provides a very nice set of features for distributed caching (which is what we use it for with L2 caching) plus "Data grid" features.
My expectation is that most people will prefer client/server mode with use of near caches.
We can use Ignite in client/server
mode which means that our application uses a
Ignite client
to talk to a Ignite cluster (of servers).
In this mode the bean cache data is partitioned across all the Ignite servers in the cluster
and not in our application. We can choose to use a near cache
for some or all of our bean
types and in doing so improve performance (by having local data) but increase memory footprint in our
application (as it now holds some cache data).
In server mode our application starts a Ignite server instance
which is a full fledged member
of the Ignite cluster. This means that it will hold data etc.
Add a dependency to ebean-ignite
. When Ebean starts ebean-ignite is
automatically registered as the L2 cache implementation.
During development and testing it is often useful to disable the use of the l2 cache.
You can programmatically configure Ignite by creating an instance of IgniteConfiguration
and setting it via:
If this configuration instance is passed in Ebean will use it to configure the Ignite instance. Otherwise it will use properties and avaje IgniteConfigBuilder.


Mobility Data
We work with your collected data sets to organize and uncover actionable insights.
---
title: Home
description: Mobility Observer helps cities work toward a smarter future.
image: /images/street_rails.jpg
bottom_image: /images/parked_bike.jpg
---
Mobility Observer helps businesses and governments work toward a smarter future.Mobility Observer
We work with your collected data sets to organize and uncover actionable insights.
We build web applications to help organizations and governments effectively understand and take action on their mobility data.
Understanding data is just the tip of the iceberg. We work with stakeholders within your organization to improve processes around acquiring, managing and extracting insight from data. We then work within the organization to plan for how useful information can be delivered to the right people at the right time.
Uncover your data's hidden potential.


Overview:
This visualization attempts to explore the question: Do better critical reviews of video games result in increased sales numbers and does a game's age rating play any role in total sales? The slides guide the reader in an attempt to answer this question, along with provide other views of the data so they may reach their own conclusions.
Narrative Visualization Structure:
This visualization uses the hybrid interactive slideshow structure with scenes, annotations, parameters, and triggers on each slide. The javascript framework reveal.js, along with similarly structured charts using d3.js v4 (and no external libraries) are used to provide visual consistency between scenes. You can either use the arrows on the keyboard or click the left/right/down/up arrows on the bottom right of each slide to transition through the trigger points on each scene. The second scene allows the user to click/press the down arrow to drill further down into different groupings of the sales data for further exploration. The arrow buttons in the lower right will blink and move to inform the user that they can be used for navigation (type '?' on keyboard for help).
Scenes:
As mentioned previously, the scenes in this visualization were set up using the reveal.js framework in order to maintain visual consistency and not disorient the reader. The common theme is a few guided annotations for each chart followed by opening up the chart for reader exploration. The scatter plot allows for left/right transitions and the stacked bar charts allow for left/right transitioning to process through annotations in a single chart to the final opening up for exploration. After guiding the reader from the scatter plot to a transformed bar chart representation to more easily see trends (grouped by age rating), the bar chart slide also allows for the reader to drill down (using the up/down arrow or buttons) to view other aggregations of the data - sales by region, console platform, and game genre binned into Metacritic aggregate review bars.
The first scene is a scatterplot showing an overview of the entire dataset that was used for this project - sales data for video games from 1980 to 2016 versus Metacritic aggregate review score, visually grouped by age rating using different colors.
Due to the presence of a few outlier values, a log scale for sales was used to spread out the points for easier viewing.
Manual zooming and filtering is initially disabled while the reader is stepped through some annotations to highlight some trends in the data (using triggers provided by using the left/right arrow keys), but on the final transition for the scatter plot (with an accompanying annotation) the user can zoom (using mouse drags) and filter (clicking on the legend) on their own to explore the data, hovering over the points for detailed tooltip information which provide all of the data provided in this data set.
The second scene is a stacked bar chart collapsing all of the data from the scatter plot of game sales vs. Metacritic score (grouped by age rating) for ease of seeing trends, as there are a very large number of data points in the scatter plot. Filtering is disabled as the reader is guided through a few annotations (triggered and cleared using the left/right arrow keys) until the final transition, where the reader is free to explore the data by hovering over the bars to bring up a tooltip and to click on the legend to filter the data. In this scene, the reader is allowed to drill down (using up/down buttons or keys) to further scenes which closely follow the second scene but group the data by different categories seen in the scatter plot data - sales by region, console platform, and game genre also all binned into Metacritic score ranges as stacked bar charts. The annotations, parameters, and triggers follow from the second scene.
Annotations:
The annotations use combinations of SVG rectangles, circles, ellipses, lines, and arrows drawn using d3 with similar styling and text size to provide visual consistency in each scene and highlight key points. The annotations in each scene change based on the triggers of transitioning using the arrow keys, which will clear old annotations and add new ones based on the current view of the data in place (all of the annotations are independent of one another and are controlled by changing opacity on each of the slide transitions). The final annotation of each scene/chart informs the user that they are open to explore the data using the corresponding zooming and filtering options. Hovering over scatter plot points or bars on the bar charts will display tooltips with more data.
Parameters:
The driving parameter in each of the scenes and charts is the groupings of the sales data in question. In the scatter plot (first scene) and first stacked bar chart (second scene) the parameter is Age Rating using the US’s ESRB rating system (Everyone 6+ years old, Everyone 10+ years old, Teen (13+ years old), Mature (17+ years old), and Adults Only (18+ years old)). Using the arrow keys in each chart will auto filter the data based on the category in question and provide annotations to highlight interesting observations before being cleared on the final transition in each chart to allow the reader to manually filter based on the parameter. In the following scenes (reached by pressing/clicking down on the 2nd scene), the parameters are: Sales Region (North America, EU, Japan, and Other), Console Platform (Xbox, Playstation, etc), and Game Genre (Action, Sports, Shooter, etc) in relation to total sales numbers by Metacritic score.
Triggers:
Triggers are implemented in this visualization mainly through the use of the arrow buttons (provided by reveal.js in the lower right of each slide) along with the ability to click on the legends of each chart on the final transition of each scene to filter the data by grouping, which allows for further exploration of the data. The scatter plot triggers filter the sales data by age rating and display annotations on the plot to highlight interesting data. The final transition of the scatterplot in the first scene allows the reader to click and drag to select a window to trigger a zoom in addition to filtering the data through the legend.
The transitions on the bar chart scenes also filter the sales data by the categories detailed on the chart (switching from a stacked bar chart to a regular bar chart on filter) allowing for observations of trends without obfuscation from the stacking on the chart. The bar chart triggers also present different annotations to highlight observations in the data to the reader. The reveal.js arrows will blink and move to alert the user they are available, and various text annotations in the slide also inform the user how to activate the triggers.
Data Source:
https://www.kaggle.com/rush4ratio/video-game-sales-with-ratings
Tools:
https://d3js.org/Notice:
This visualization is intended to be viewed on Chrome (recommended), Firefox, or Safari on a desktop computer with a minimum resolution of 1000 x 600 pixels - a smaller viewport could cause display issues (if you do resize your window, try refreshing the page to re-render with the new size) .
Overview
This scatter plot gives a high level overview, including the entire dataset that was pulled from Kaggle. Due to the wide spread of sales (mostly due to a few outliers), a logarithmic scale is used on the y-axis. Click the right button on the bottom right (or press the right arrow key) to progress, left arrow (or key) to backtrack.
Metacritic scores are retrieved from a website (metacritic.com) that aggregates multiple games journalists' review scores for a game and normalizes them on a scale from 1 to 100. This data is grouped by age rating, which is assigned using the ESRB rating system in use in the USA.
Once the chart indicates you can explore, you will be able to zoom (by clicking and dragging a box with the mouse - double click to zoom out) and filter the data using the legend. Hover over a data point for more details.
Type '?' on your keyboard for slide control help, or "o" for an overview of the presentation.
Age Rating
This stacked bar chart collects the data from the previous scatter plot and sums the sales numbers by 5-point Metacritic score bins to reduce the number of bars and make it easier to spot trends. Click the right button on the bottom right (or press the right arrow key) to progress. Left arrow (or key) to backtrack.
This data is grouped by age rating, which is assigned using the ESRB rating system in use in the USA (www.esrb.org/ratings/) . A tailed normal distribution in sales data when plotted against Metacritic score is an interesting takeaway. Another is the high level of Mature rated games with higher scores.
Once the chart indicates you can explore, you will be able to filter the data using the legend. Hover over a bar for more details in the form of a tooltip. If you would like to continue exploring this dataset, click the down button or press the down arrow key for further charts.
Type '?' on your keyboard for slide control help, or "o" for an overview of the presentation.
Regional Sales
This stacked bar chart collects the data from the previous scatter plot and sums the sales numbers by 5-point Metacritic score bins to reduce the number of bars and make it easier to spot trends. Click the right button on the bottom right (or press the right arrow key) to progress. Left arrow (or key) to backtrack.
This data is grouped by regional sales, which in this data set was split into North America, European Union, Japan and Other sales. The tailed normal distribution in sales data when plotted against Metacritic score is obviously still present. We can see that North America accounts for nearly half of all game sales, and that each of the divisions follow the same normal distribution.
Once the chart indicates you can explore, you will be able to filter the data using the legend. Hover over a bar for more details in the form of a tooltip.
Type '?' on your keyboard for slide control help, or "o" for an overview of the presentation.
Platform
This stacked bar chart collects the data from the previous scatter plot and sums the sales numbers by 5-point Metacritic score bins to reduce the number of bars and make it easier to spot trends. Click the right button on the bottom right (or press the right arrow key) to progress. Left arrow (or key) to backtrack.
This data is grouped by console platform, covering the majority of the major gaming platforms from the late 90s and up (PC data goes back to the 80's). The tailed normal distribution in sales data when plotted against Metacritic score is obviously still present. We can see that a few of the more recent dominant platforms cover the majority of sales, namely the Playstation and Xbox console series. We can also see that most of the consoles seem to also follow a tailed normal distribution for sales, other than the handheld systems (DS, 3DS, Playstation Portable, and Vita) which seem to be a lot more flat in sales in the higher Metacritic score bins.
Once the chart indicates you can explore, you will be able to filter the data using the legend. Hover over a bar for more details in the form of a tooltip. Click the down arrow or press the down arrow key to explore the data even further.
Type '?' on your keyboard for slide control help, or "o" for an overview of the presentation.
Genre
This stacked bar chart collects the data from the previous scatter plot and sums the sales numbers by 5-point Metacritic score bins to reduce the number of bars and make it easier to spot trends. Click the right button on the bottom right (or press the right arrow key) to progress. Left arrow (or key) to backtrack.
This data is grouped by game genre, which in this data set was split into the groupings seen, in the legend on the right. The tailed normal distribution in sales data when plotted against Metacritic score is obviously still present. We can see that a few genres are more prevalent (namely Sports, Shooter, Action, and Racing), and that most of the divisions follow the same normal distribution. Misc category games seem to have their distribution shifted towards lower scores. A surprising find here is the Action games do not seem to tail off at higher Metacritic scores like the rest of the categories.
Once the chart indicates you can explore, you will be able to filter the data using the legend. Hover over a bar for more details in the form of a tooltip.
Type '?' on your keyboard for slide control help, or "o" for an overview of the presentation.
Data Source:
https://www.kaggle.com/rush4ratio/video-game-sales-with-ratings
Tools:
https://d3js.org/Notice:
This visualization is intended to be viewed on Chrome (recommended), Firefox, or Safari with a minimum resolution of 1000 x 600 pixels - a smaller viewport could cause display issues (if you do resize your window, try refreshing the page to re-render with the new size) .


Those are for example city coordinates lookup. It lets you enter a city name and returns the corresponding coordinates.
Also an interesting idea is cascading multiple images to get a bigger view. But this requires high precision coordinate computation.
One could check the cloudiness value and search for the closest non-cloudy image in time. Must be optional.
And of course it would be nice if your current position could be looked up.


PCA plot
pca( data = data, center = T, retx = T, scale = FALSE, display_name = FALSE, rename = c("diy", "replace"), sample_group = NULL, str_sample = NULL, str_group = "-.*", add_ploy = c("null", "ellipse", "encircle", "polygon"), name_size = 4, point_size = 2 )
| data | iput data form the function 'pca_data_tidy' or a matrix of column(gene) and row(sample). |
|---|---|
| center | the prcomp param, detail see '?prcomp' |
| retx | the prcomp param, detail see '?prcomp' |
| scale | the prcomp param, detail see '?prcomp' |
| display_name | if TRUE will add the text labels on points. |
| rename | the very important parameter,if don't input the rename parameter, will take it as no group. and rename default is "diy", the method for change the sample and group names, two argment can choose, "diy" is for the creat a data for name use the parameter "sample_group", if rename = "replace" is use regexp to replace for change the name by the parameter "str_sample" and "str_group". |
| sample_group | need the parameter only when rename = "diy", a data frame for change the sample and group name, the rownames is sample and the first column is group. or a tibble ,the first column is sample name and the second column is group names. |
| str_sample | need the parameter only when rename = "replace", the 'regexp' for the sample name to become the target name |
| str_group | need the parameter only when rename = "replace", the 'regexp' for the group name base on the sample names haved changed by "str_sample". |
| add_ploy | will add the ploy line to encircle the sample points, can choose the ploy style form "ellipse","encircle","polygon", see the plot in example. the default is "polygon". |
| name_size | the font size of sample name. |
| point_size | the size of the piont |
a ggplot object


Event Trace
Create
Cell Click
App Click
Double Click
Window Open
App Save
App Edit
App Delete
App Created
App Changed
App Removed
Navigation
Resize Start
Resize Stop
Drag Start
Drag Stop


A mutable holder of application content. More...
Macros | |
| #define | PN_DEFAULT_PRIORITY |
| Default priority for messages. | |
Typedefs | |
| typedef struct pn_message_t | pn_message_t |
| An AMQP Message object. More... | |
Functions | |
| pn_message_t * | pn_message (void) |
| Construct a new pn_message_t. More... | |
| void | pn_message_free (pn_message_t *msg) |
| Free a previously constructed pn_message_t. More... | |
| void | pn_message_clear (pn_message_t *msg) |
| Clears the content of a pn_message_t. More... | |
| int | pn_message_errno (pn_message_t *msg) |
| Access the error code of a message. More... | |
| pn_error_t * | pn_message_error (pn_message_t *msg) |
| Access the error information for a message. More... | |
| bool | pn_message_is_inferred (pn_message_t *msg) |
| Get the inferred flag for a message. More... | |
| int | pn_message_set_inferred (pn_message_t *msg, bool inferred) |
| Set the inferred flag for a message. More... | |
| bool | pn_message_is_durable (pn_message_t *msg) |
| Get the durable flag for a message. More... | |
| int | pn_message_set_durable (pn_message_t *msg, bool durable) |
| Set the durable flag for a message. More... | |
| uint8_t | pn_message_get_priority (pn_message_t *msg) |
| Get the priority for a message. More... | |
| int | pn_message_set_priority (pn_message_t *msg, uint8_t priority) |
| Set the priority for a message. More... | |
| pn_millis_t | pn_message_get_ttl (pn_message_t *msg) |
| Get the ttl for a message. More... | |
| int | pn_message_set_ttl (pn_message_t *msg, pn_millis_t ttl) |
| Set the ttl for a message. More... | |
| bool | pn_message_is_first_acquirer (pn_message_t *msg) |
| Get the first acquirer flag for a message. More... | |
| int | pn_message_set_first_acquirer (pn_message_t *msg, bool first) |
| Set the first acquirer flag for a message. More... | |
| uint32_t | pn_message_get_delivery_count (pn_message_t *msg) |
| Get the delivery count for a message. More... | |
| int | pn_message_set_delivery_count (pn_message_t *msg, uint32_t count) |
| Set the delivery count for a message. More... | |
| pn_data_t * | pn_message_id (pn_message_t *msg) |
| Get/set the id for a message. More... | |
| pn_atom_t | pn_message_get_id (pn_message_t *msg) |
| Get the id for a message. More... | |
| int | pn_message_set_id (pn_message_t *msg, pn_atom_t id) |
| Set the id for a message. More... | |
| pn_bytes_t | pn_message_get_user_id (pn_message_t *msg) |
| Get the user id for a message. More... | |
| int | pn_message_set_user_id (pn_message_t *msg, pn_bytes_t user_id) |
| Set the user id for a message. More... | |
| const char * | pn_message_get_address (pn_message_t *msg) |
| Get the address for a message. More... | |
| int | pn_message_set_address (pn_message_t *msg, const char *address) |
| Set the address for a message. More... | |
| const char * | pn_message_get_subject (pn_message_t *msg) |
| Get the subject for a message. More... | |
| int | pn_message_set_subject (pn_message_t *msg, const char *subject) |
| Set the subject for a message. More... | |
| const char * | pn_message_get_reply_to (pn_message_t *msg) |
| Get the reply_to for a message. More... | |
| int | pn_message_set_reply_to (pn_message_t *msg, const char *reply_to) |
| Set the reply_to for a message. More... | |
| pn_data_t * | pn_message_correlation_id (pn_message_t *msg) |
| Get/set the correlation id for a message. More... | |
| pn_atom_t | pn_message_get_correlation_id (pn_message_t *msg) |
| Get the correlation id for a message. More... | |
| int | pn_message_set_correlation_id (pn_message_t *msg, pn_atom_t id) |
| Set the correlation id for a message. More... | |
| const char * | pn_message_get_content_type (pn_message_t *msg) |
| Get the content_type for a message. More... | |
| int | pn_message_set_content_type (pn_message_t *msg, const char *type) |
| Set the content_type for a message. More... | |
| const char * | pn_message_get_content_encoding (pn_message_t *msg) |
| Get the content_encoding for a message. More... | |
| int | pn_message_set_content_encoding (pn_message_t *msg, const char *encoding) |
| Set the content_encoding for a message. More... | |
| pn_timestamp_t | pn_message_get_expiry_time (pn_message_t *msg) |
| Get the expiry time for a message. More... | |
| int | pn_message_set_expiry_time (pn_message_t *msg, pn_timestamp_t time) |
| Set the expiry time for a message. More... | |
| pn_timestamp_t | pn_message_get_creation_time (pn_message_t *msg) |
| Get the creation time for a message. More... | |
| int | pn_message_set_creation_time (pn_message_t *msg, pn_timestamp_t time) |
| Set the creation time for a message. More... | |
| const char * | pn_message_get_group_id (pn_message_t *msg) |
| Get the group_id for a message. More... | |
| int | pn_message_set_group_id (pn_message_t *msg, const char *group_id) |
| Set the group_id for a message. More... | |
| pn_sequence_t | pn_message_get_group_sequence (pn_message_t *msg) |
| Get the group sequence for a message. More... | |
| int | pn_message_set_group_sequence (pn_message_t *msg, pn_sequence_t n) |
| Set the group sequence for a message. More... | |
| const char * | pn_message_get_reply_to_group_id (pn_message_t *msg) |
| Get the reply_to_group_id for a message. More... | |
| int | pn_message_set_reply_to_group_id (pn_message_t *msg, const char *reply_to_group_id) |
| Set the reply_to_group_id for a message. More... | |
| pn_data_t * | pn_message_instructions (pn_message_t *msg) |
| Get/set the delivery instructions for a message. More... | |
| pn_data_t * | pn_message_annotations (pn_message_t *msg) |
| Get/set the annotations for a message. More... | |
| pn_data_t * | pn_message_properties (pn_message_t *msg) |
| Get and set the properties for a message. More... | |
| pn_data_t * | pn_message_body (pn_message_t *msg) |
| Get and set the body of a message. More... | |
| int | pn_message_decode (pn_message_t *msg, const char *bytes, size_t size) |
| Decode/load message content from AMQP formatted binary data. More... | |
| int | pn_message_encode (pn_message_t *msg, char *bytes, size_t *size) |
| Encode a message as AMQP formatted binary data. More... | |
| ssize_t | pn_message_encode2 (pn_message_t *msg, pn_rwbytes_t *buf) |
| Unsettled API: Encode a message, allocating space if necessary More... | |
| ssize_t | pn_message_send (pn_message_t *msg, pn_link_t *sender, pn_rwbytes_t *buf) |
| Unsettled API More... | |
| int | pn_message_data (pn_message_t *msg, pn_data_t *data) |
| Save message content into a pn_data_t object data. More... | |
A mutable holder of application content.
| typedef struct pn_message_t pn_message_t |
An AMQP Message object.
An AMQP Message object is a mutable holder of message content that may be used to generate and encode or decode and access AMQP formatted message data.
| pn_message_t* pn_message | ( | void | ) |
Construct a new pn_message_t.
Every message that is constructed must be freed using pn_message_free().
| void pn_message_free | ( | pn_message_t * | msg | ) |
Free a previously constructed pn_message_t.
| [in] | msg | pointer to a pn_message_t or NULL |
| void pn_message_clear | ( | pn_message_t * | msg | ) |
Clears the content of a pn_message_t.
When pn_message_clear returns, the supplied pn_message_t will be emptied of all content and effectively returned to the same state as if it was just created.
| [in] | msg | pointer to the pn_message_t to be cleared |
| int pn_message_errno | ( | pn_message_t * | msg | ) |
Access the error code of a message.
Every operation on a message that can result in an error will set the message's error code in case of error. The pn_message_errno() call will access the error code of the most recent failed operation.
| [in] | msg | a message |
| pn_error_t* pn_message_error | ( | pn_message_t * | msg | ) |
Access the error information for a message.
Every operation on a message that can result in an error will update the error information held by its error descriptor should that operation fail. The pn_message_error() call will access the error information of the most recent failed operation. The pointer returned by this call is valid until the message is freed.
| [in] | msg | a message |
| bool pn_message_is_inferred | ( | pn_message_t * | msg | ) |
Get the inferred flag for a message.
The inferred flag for a message indicates how the message content is encoded into AMQP sections. If inferred is true then binary and list values in the body of the message will be encoded as AMQP DATA and AMQP SEQUENCE sections, respectively. If inferred is false, then all values in the body of the message will be encoded as AMQP VALUE sections regardless of their type. Use pn_message_set_inferred to set the value.
| [in] | msg | a message object |
| int pn_message_set_inferred | ( | pn_message_t * | msg, |
| bool | inferred | ||
| ) |
Set the inferred flag for a message.
See pn_message_is_inferred() for a description of what the inferred flag is.
| [in] | msg | a message object |
| [in] | inferred | the new value of the inferred flag |
| bool pn_message_is_durable | ( | pn_message_t * | msg | ) |
Get the durable flag for a message.
The durable flag indicates that any parties taking responsibility for the message must durably store the content.
| [in] | msg | a message object |
| int pn_message_set_durable | ( | pn_message_t * | msg, |
| bool | durable | ||
| ) |
Set the durable flag for a message.
See pn_message_is_durable() for a description of the durable flag.
| [in] | msg | a message object |
| [in] | durable | the new value of the durable flag |
| uint8_t pn_message_get_priority | ( | pn_message_t * | msg | ) |
Get the priority for a message.
The priority of a message impacts ordering guarantees. Within a given ordered context, higher priority messages may jump ahead of lower priority messages.
| [in] | msg | a message object |
| int pn_message_set_priority | ( | pn_message_t * | msg, |
| uint8_t | priority | ||
| ) |
Set the priority for a message.
See pn_message_get_priority() for details on message priority.
| [in] | msg | a message object |
| [in] | priority | the new priority for the message |
| pn_millis_t pn_message_get_ttl | ( | pn_message_t * | msg | ) |
Get the ttl for a message.
The ttl for a message determines how long a message is considered live. When a message is held for retransmit, the ttl is decremented. Once the ttl reaches zero, the message is considered dead. Once a message is considered dead it may be dropped. Use pn_message_set_ttl() to set the ttl for a message.
| [in] | msg | a message object |
| int pn_message_set_ttl | ( | pn_message_t * | msg, |
| pn_millis_t | ttl | ||
| ) |
Set the ttl for a message.
See pn_message_get_ttl() for a detailed description of message ttl.
| [in] | msg | a message object |
| [in] | ttl | the new value for the message ttl |
| bool pn_message_is_first_acquirer | ( | pn_message_t * | msg | ) |
Get the first acquirer flag for a message.
When set to true, the first acquirer flag for a message indicates that the recipient of the message is the first recipient to acquire the message, i.e. there have been no failed delivery attempts to other acquirers. Note that this does not mean the message has not been delivered to, but not acquired, by other recipients.
| [in] | msg | a message object |
| int pn_message_set_first_acquirer | ( | pn_message_t * | msg, |
| bool | first | ||
| ) |
Set the first acquirer flag for a message.
See pn_message_is_first_acquirer() for details on the first acquirer flag.
| [in] | msg | a message object |
| [in] | first | the new value for the first acquirer flag |
| uint32_t pn_message_get_delivery_count | ( | pn_message_t * | msg | ) |
Get the delivery count for a message.
The delivery count field tracks how many attempts have been made to delivery a message. Use pn_message_set_delivery_count() to set the delivery count for a message.
| [in] | msg | a message object |
| int pn_message_set_delivery_count | ( | pn_message_t * | msg, |
| uint32_t | count | ||
| ) |
Set the delivery count for a message.
See pn_message_get_delivery_count() for details on what the delivery count means.
| [in] | msg | a message object |
| [in] | count | the new delivery count |
| pn_data_t* pn_message_id | ( | pn_message_t * | msg | ) |
Get/set the id for a message.
The message id provides a globally unique identifier for a message. A message id can be an a string, an unsigned long, a uuid or a binary value. This operation returns a pointer to a pn_data_t that can be used to access and/or modify the value of the message id. The pointer is valid until the message is freed. See pn_data_t for details on how to get/set the value.
| [in] | msg | a message object |
| pn_atom_t pn_message_get_id | ( | pn_message_t * | msg | ) |
Get the id for a message.
The message id provides a globally unique identifier for a message. A message id can be an a string, an unsigned long, a uuid or a binary value. This operation returns the value of the id using the pn_atom_t discriminated union. See pn_atom_t for details on how to access the value.
| [in] | msg | a message object |
| int pn_message_set_id | ( | pn_message_t * | msg, |
| pn_atom_t | id | ||
| ) |
Set the id for a message.
See pn_message_get_id() for more details on the meaning of the message id. Note that only string, unsigned long, uuid, or binary values are permitted.
| [in] | msg | a message object |
| [in] | id | the new value of the message id |
| pn_bytes_t pn_message_get_user_id | ( | pn_message_t * | msg | ) |
Get the user id for a message.
The pointer referenced by the pn_bytes_t struct will be valid until any one of the following operations occur:
| [in] | msg | a message object |
| int pn_message_set_user_id | ( | pn_message_t * | msg, |
| pn_bytes_t | user_id | ||
| ) |
Set the user id for a message.
This operation copies the bytes referenced by the provided pn_bytes_t struct.
| [in] | msg | a message object |
| [in] | user_id | the new user_id for the message |
| const char* pn_message_get_address | ( | pn_message_t * | msg | ) |
Get the address for a message.
This operation will return NULL if no address has been set or if the address has been set to NULL. The pointer returned by this operation is valid until any one of the following operations occur:
| [in] | msg | a message object |
| int pn_message_set_address | ( | pn_message_t * | msg, |
| const char * | address | ||
| ) |
Set the address for a message.
The supplied address pointer must either be NULL or reference a NUL terminated string. When the pointer is NULL, the address of the message is set to NULL. When the pointer is non NULL, the contents are copied into the message.
| [in] | msg | a message object |
| [in] | address | a pointer to the new address (or NULL) |
| const char* pn_message_get_subject | ( | pn_message_t * | msg | ) |
Get the subject for a message.
This operation will return NULL if no subject has been set or if the subject has been set to NULL. The pointer returned by this operation is valid until any one of the following operations occur:
| [in] | msg | a message object |
| int pn_message_set_subject | ( | pn_message_t * | msg, |
| const char * | subject | ||
| ) |
Set the subject for a message.
The supplied subject pointer must either be NULL or reference a NUL terminated string. When the pointer is NULL, the subject is set to NULL. When the pointer is non NULL, the contents are copied into the message.
| [in] | msg | a message object |
| [in] | subject | a pointer to the new subject (or NULL) |
| const char* pn_message_get_reply_to | ( | pn_message_t * | msg | ) |
Get the reply_to for a message.
This operation will return NULL if no reply_to has been set or if the reply_to has been set to NULL. The pointer returned by this operation is valid until any one of the following operations occur:
| [in] | msg | a message object |
| int pn_message_set_reply_to | ( | pn_message_t * | msg, |
| const char * | reply_to | ||
| ) |
Set the reply_to for a message.
The supplied reply_to pointer must either be NULL or reference a NUL terminated string. When the pointer is NULL, the reply_to is set to NULL. When the pointer is non NULL, the contents are copied into the message.
| [in] | msg | a message object |
| [in] | reply_to | a pointer to the new reply_to (or NULL) |
| pn_data_t* pn_message_correlation_id | ( | pn_message_t * | msg | ) |
Get/set the correlation id for a message.
A correlation id can be an a string, an unsigned long, a uuid or a binary value. This operation returns a pointer to a pn_data_t that can be used to access and/or modify the value of the correlation id. The pointer is valid until the message is freed. See pn_data_t for details on how to get/set the value.
| [in] | msg | a message object |
| pn_atom_t pn_message_get_correlation_id | ( | pn_message_t * | msg | ) |
Get the correlation id for a message.
A correlation id can be an a string, an unsigned long, a uuid or a binary value. This operation returns the value of the id using the pn_atom_t discriminated union. See pn_atom_t for details on how to access the value.
| [in] | msg | a message object |
| int pn_message_set_correlation_id | ( | pn_message_t * | msg, |
| pn_atom_t | id | ||
| ) |
Set the correlation id for a message.
See pn_message_get_correlation_id() for more details on the meaning of the correlation id. Note that only string, unsigned long, uuid, or binary values are permitted.
| [in] | msg | a message object |
| [in] | id | the new value of the message id |
| const char* pn_message_get_content_type | ( | pn_message_t * | msg | ) |
Get the content_type for a message.
This operation will return NULL if no content_type has been set or if the content_type has been set to NULL. The pointer returned by this operation is valid until any one of the following operations occur:
| [in] | msg | a message object |
| int pn_message_set_content_type | ( | pn_message_t * | msg, |
| const char * | type | ||
| ) |
Set the content_type for a message.
The supplied content_type pointer must either be NULL or reference a NUL terminated string. When the pointer is NULL, the content_type is set to NULL. When the pointer is non NULL, the contents are copied into the message.
| [in] | msg | a message object |
| [in] | type | a pointer to the new content_type (or NULL) |
| const char* pn_message_get_content_encoding | ( | pn_message_t * | msg | ) |
Get the content_encoding for a message.
This operation will return NULL if no content_encoding has been set or if the content_encoding has been set to NULL. The pointer returned by this operation is valid until any one of the following operations occur:
| [in] | msg | a message object |
| int pn_message_set_content_encoding | ( | pn_message_t * | msg, |
| const char * | encoding | ||
| ) |
Set the content_encoding for a message.
The supplied content_encoding pointer must either be NULL or reference a NUL terminated string. When the pointer is NULL, the content_encoding is set to NULL. When the pointer is non NULL, the contents are copied into the message.
| [in] | msg | a message object |
| [in] | encoding | a pointer to the new content_encoding (or NULL) |
| pn_timestamp_t pn_message_get_expiry_time | ( | pn_message_t * | msg | ) |
Get the expiry time for a message.
A zero value for the expiry time indicates that the message will never expire. This is the default value.
| [in] | msg | a message object |
| int pn_message_set_expiry_time | ( | pn_message_t * | msg, |
| pn_timestamp_t | time | ||
| ) |
Set the expiry time for a message.
See pn_message_get_expiry_time() for more details.
| [in] | msg | a message object |
| [in] | time | the new expiry time for the message |
| pn_timestamp_t pn_message_get_creation_time | ( | pn_message_t * | msg | ) |
Get the creation time for a message.
A zero value for the creation time indicates that the creation time has not been set. This is the default value.
| [in] | msg | a message object |
| int pn_message_set_creation_time | ( | pn_message_t * | msg, |
| pn_timestamp_t | time | ||
| ) |
Set the creation time for a message.
See pn_message_get_creation_time() for more details.
| [in] | msg | a message object |
| [in] | time | the new creation time for the message |
| const char* pn_message_get_group_id | ( | pn_message_t * | msg | ) |
Get the group_id for a message.
This operation will return NULL if no group_id has been set or if the group_id has been set to NULL. The pointer returned by this operation is valid until any one of the following operations occur:
| [in] | msg | a message object |
| int pn_message_set_group_id | ( | pn_message_t * | msg, |
| const char * | group_id | ||
| ) |
Set the group_id for a message.
The supplied group_id pointer must either be NULL or reference a NUL terminated string. When the pointer is NULL, the group_id is set to NULL. When the pointer is non NULL, the contents are copied into the message.
| [in] | msg | a message object |
| [in] | group_id | a pointer to the new group_id (or NULL) |
| pn_sequence_t pn_message_get_group_sequence | ( | pn_message_t * | msg | ) |
Get the group sequence for a message.
The group sequence of a message identifies the relative ordering of messages within a group. The default value for the group sequence of a message is zero.
| [in] | msg | a message object |
| int pn_message_set_group_sequence | ( | pn_message_t * | msg, |
| pn_sequence_t | n | ||
| ) |
Set the group sequence for a message.
See pn_message_get_group_sequence() for details on what the group sequence means.
| [in] | msg | a message object |
| [in] | n | the new group sequence for the message |
| const char* pn_message_get_reply_to_group_id | ( | pn_message_t * | msg | ) |
Get the reply_to_group_id for a message.
This operation will return NULL if no reply_to_group_id has been set or if the reply_to_group_id has been set to NULL. The pointer returned by this operation is valid until any one of the following operations occur:
| [in] | msg | a message object |
| int pn_message_set_reply_to_group_id | ( | pn_message_t * | msg, |
| const char * | reply_to_group_id | ||
| ) |
Set the reply_to_group_id for a message.
The supplied reply_to_group_id pointer must either be NULL or reference a NUL terminated string. When the pointer is NULL, the reply_to_group_id is set to NULL. When the pointer is non NULL, the contents are copied into the message.
| [in] | msg | a message object |
| [in] | reply_to_group_id | a pointer to the new reply_to_group_id (or NULL) |
| pn_data_t* pn_message_instructions | ( | pn_message_t * | msg | ) |
Get/set the delivery instructions for a message.
This operation returns a pointer to a pn_data_t representing the content of the delivery instructions section of a message. The pointer is valid until the message is freed and may be used to both access and modify the content of the delivery instructions section of a message.
The pn_data_t must either be empty or consist of a symbol keyed map in order to be considered valid delivery instructions.
| [in] | msg | a message object |
| pn_data_t* pn_message_annotations | ( | pn_message_t * | msg | ) |
Get/set the annotations for a message.
This operation returns a pointer to a pn_data_t representing the content of the annotations section of a message. The pointer is valid until the message is freed and may be used to both access and modify the content of the annotations section of a message.
The pn_data_t must either be empty or consist of a symbol keyed map in order to be considered valid message annotations.
| [in] | msg | a message object |
| pn_data_t* pn_message_properties | ( | pn_message_t * | msg | ) |
Get and set the properties for a message.
This operation returns a pointer to a pn_data_t representing the content of the properties section of a message. The pointer is valid until the message is freed and may be used to both access and modify the content of the properties section of a message.
The pn_data_t must either be empty or consist of a string keyed map in order to be considered valid message properties.
| [in] | msg | a message object |
| pn_data_t* pn_message_body | ( | pn_message_t * | msg | ) |
Get and set the body of a message.
This operation returns a pointer to a pn_data_t representing the body of a message. The pointer is valid until the message is freed and may be used to both access and modify the content of the message body.
| [in] | msg | a message object |
| int pn_message_decode | ( | pn_message_t * | msg, |
| const char * | bytes, | ||
| size_t | size | ||
| ) |
Decode/load message content from AMQP formatted binary data.
Upon invoking this operation, any existing message content will be cleared and replaced with the content from the provided binary data.
| [in] | msg | a message object |
| [in] | bytes | the start of the encoded AMQP data |
| [in] | size | the size of the encoded AMQP data |
| int pn_message_encode | ( | pn_message_t * | msg, |
| char * | bytes, | ||
| size_t * | size | ||
| ) |
Encode a message as AMQP formatted binary data.
If the buffer space provided is insufficient to store the content held in the message, the operation will fail and return a PN_OVERFLOW error code.
| [in] | msg | a message object |
| [in] | bytes | the start of empty buffer space |
| [in,out] | size | the amount of empty buffer space. On return size holds the amount of data written |
| ssize_t pn_message_encode2 | ( | pn_message_t * | msg, |
| pn_rwbytes_t * | buf | ||
| ) |
Unsettled API: Encode a message, allocating space if necessary
| [in] | msg | A message object. |
| [in,out] | buf | Used to encode msg. If buf->start == NULL memory is allocated with malloc(). If buf->size is not large enough, buffer is expanded with realloc(). On return buf holds the address and size of the final buffer. buf->size may be larger than the length of the encoded message. |
| ssize_t pn_message_send | ( | pn_message_t * | msg, |
| pn_link_t * | sender, | ||
| pn_rwbytes_t * | buf | ||
| ) |
Unsettled API
Encode and send a message on a sender link.
Performs the following steps:
Note: you must create a delivery for the message before calling pn_message_send() see pn_delivery()
| [in] | msg | A message object. |
| [in] | sender | A sending link. |
| [in,out] | buf | See pn_message_encode2. If buf == NULL then any memory needed for encoding will be allocated and freed by pn_message_send(). |
| int pn_message_data | ( | pn_message_t * | msg, |
| pn_data_t * | data | ||
| ) |
Save message content into a pn_data_t object data.
The data object will first be cleared.


Yeah yeah this is another asian weeb doing cs
S tier
A tier
B tier ? Idk man
Dont Play
FullMetal Alchemist | All Miyazaki movies(esp castle in the sky) | Clannad afterstory| Code Geass | No game no Life | Attack on Titan | Konosuba | First 12 episodes of SAO| Super mario Galaxy | Super mario sunshine | Lego star wars | warcraft 3
Angel Beats | Death Note | Horimiya | Hunter x Hunter | Sakura-sou no Pet na Kanojo | yahari series | One punch man | Megalo box | Bunny senpai | Love is war | Index/railgun series | zelda BOTW | Starcraft 2 | Portal 2
Golden Time | Nisekoi | Steins gate | world trigger | Re Zero series | Enen no Shouboutai | Plastic memories | Deadman wonderland | Toradora | Neon Genesis Evangelion | Darling in the franxx | mekakucity Actors | cowboy bebop
LEAGE OF LEGENDS i'm about to log on but don't play this game


Used to pass values and parameters as 'arguments' through functions. Also used to structure
values or equations for statements, such as if
statements. Also used to call
functions independent of arguments or values, such as boardNewGame()
.
Used to create arrays with all values in the array becoming elements. Also used to call, index, or access values within an array. An example can be to access a value, and then pass it to another array, such as:
for (let i = 0; i < board.cells.length; i++)
board.cells[i].surroundingMines = countSurroundingMines(board.cells[i]);
This is a loop, ending when the value of i
reaches board.cells.length
.
Each time i
is passed with an increment value, the value of i
is
passed through board.cells.surroundingMines
run the countSurroundingMines
function with the same value passed through i
.
Creates objects, with values in them created as properties. The indexes of those properties can be defined within the braces as well. For example:
var myOfficeKitchenCutleryDraw = {
fork: 4
knife: 8
bigSpoon: 6
teaSpoon : 0
}
Used to create a string, with the contents of that string being changeable by functions>. Can be used to reference a string elsewhere on a partial basis.
Used to create a string, with the contents of that string being immutable (i.e. cannot be modified). Can be used to reference the same string, but it must be a one-for-one match.