| goog.net.BrowserChannel |
|
clientVersion
:
An application-specific version number that is sent to the server when connected.
|
|
addAdditionalParams_(uri)
Adds the additional parameters from the handler to the given URI.
Arguments:
|
code » | ||||||
|
cancelRequests_()
Cancels all outstanding requests.
|
code » | ||||||
|
connect(testPath, channelPath, extraParams, opt_oldSessionId, opt_oldArrayId)
Starts the channel. This initiates connections to the server.
Arguments:
|
code » | ||||||
|
connectChannel_()
Starts the regular channel which is run after the test channel is complete.
|
code » | ||||||
|
connectTest_(testPath)
Starts the test channel to determine network conditions.
Arguments:
|
code » | ||||||
|
createDataUri(hostPrefix, path, opt_overridePort)
⇒
Creates a data Uri applying logic for secondary hostprefix, port
overrides, and versioning.
|
code » | ||||||
|
dequeueOutgoingMaps_()
⇒
Returns the request text from the outgoing maps and resets it.
Returns:
The encoded request text created from all the currently queued outgoing maps.
|
code » | ||||||
|
disconnect()
No description.
|
code » | ||||||
|
ensureBackChannel_()
Ensures there is a backchannel request for receiving data from the server.
|
code » | ||||||
|
ensureForwardChannel_()
Ensures that a forward channel request is scheduled.
|
code » | ||||||
|
ensureInState_(state)
Helper to ensure the BrowserChannel is in the expected state.
Arguments:
|
code » | ||||||
|
getAllowChunkedMode()
⇒
Returns whether chunked mode is allowed. In certain debugging situations,
it's useful for the application to have a way to disable chunked mode for a
user.
Returns:
Whether chunked mode is allowed.
|
code » | ||||||
|
getAllowHostPrefix()
⇒
Returns whether the channel allows the use of a subdomain. There may be
cases where this isn't allowed.
Returns:
Whether a host prefix is allowed.
|
code » | ||||||
|
getBackChannelMaxRetries()
⇒
No description.
Returns:
The max number of back-channel retries, which is a constant.
|
code » | ||||||
|
getBackChannelUri(hostPrefix, path)
⇒
Gets the Uri used for the connection that receives data from the server.
|
code » | ||||||
|
getChannelDebug()
⇒
Returns the browserchannel logger.
Returns:
The channel debug object.
|
code » | ||||||
|
getExtraHeaders()
⇒
Returns the extra HTTP headers to add to all the requests sent to the server.
Returns:
The HTTP headers, or null.
|
code » | ||||||
|
getForwardChannelMaxRetries()
⇒
No description.
Returns:
The max number of forward-channel retries, which will be 0 in fail-fast mode.
|
code » | ||||||
|
getForwardChannelUri(path)
⇒
Gets the Uri used for the connection that sends data to the server.
|
code » | ||||||
|
getHandler()
⇒
Returns the handler used for channel callback events.
Returns:
The handler.
|
code » | ||||||
|
getLastArrayId()
⇒
No description.
Returns:
The last array id received.
|
code » | ||||||
|
getLastStatusCode()
⇒
Return the last status code received for a request.
Returns:
The last status code received for a request.
|
code » | ||||||
|
getRetryTime_(retryCount)
⇒
No description.
|
code » | ||||||
|
getSessionId()
⇒
Returns the session id of the channel. Only available after the
channel has been opened.
Returns:
Session ID.
|
code » | ||||||
|
getState()
⇒
goog.net.BrowserChannel.State
Returns the browser channel state.
Returns:
goog.net.BrowserChannel.State
The current state of the browser channel.
|
code » | ||||||
|
hasOutstandingRequests()
⇒
Returns whether there are outstanding requests servicing the channel.
Returns:
true if there are outstanding requests.
|
code » | ||||||
|
isActive()
⇒
Gets whether this channel is currently active. This is used to determine the
length of time to wait before retrying. This call delegates to the handler.
Returns:
Whether the channel is currently active.
|
code » | ||||||
|
isBuffered()
⇒
Returns whether the channel is buffered or not. This state is valid for
querying only after the test connection has completed. This may be
queried in the goog.net.BrowserChannel.okToMakeRequest() callback.
A channel may be buffered if the test connection determines that
a chunked response could not be sent down within a suitable time.
Returns:
Whether the channel is buffered.
|
code » | ||||||
|
isClosed()
⇒
Returns whether the channel is closed
Returns:
true if the channel is closed.
|
code » | ||||||
|
makeForwardChannelRequest_(opt_retryRequest)
Makes a forward channel request using XMLHTTP.
Arguments:
|
code » | ||||||
|
maybeRetryBackChannel_()
⇒
Schedules a back-channel retry, unless the max retries has been reached.
Returns:
true iff a retry was scheduled.
|
code » | ||||||
|
maybeRetryForwardChannel_(request)
⇒
Schedules a forward-channel retry for the specified request, unless the max
retries has been reached.
Arguments:
Returns:
true iff a retry was scheduled.
|
code » | ||||||
|
okToMakeRequest_()
⇒
Gives the handler a chance to return an error code and stop channel
execution. A handler might want to do this to check that the user is still
logged in, for example.
Returns:
If it's OK to make a request.
|
code » | ||||||
|
onClose_()
Called when the channel has been closed. It notifiers the handler of the
event, and reports any pending or undelivered maps.
|
code » | ||||||
|
onError_(error)
Called when we've determined the final error for a channel. It closes the
notifiers the handler of the error and closes the channel.
Arguments:
|
code » | ||||||
|
onInput_(respArray)
Processes the data returned by the server.
Arguments:
|
code » | ||||||
|
onRequestComplete(request)
Callback from ChannelRequest that indicates a request has completed.
Arguments:
|
code » | ||||||
|
onRequestData(request, responseText)
Callback from ChannelRequest for when new data is received
Arguments:
|
code » | ||||||
|
onStartBackChannelTimer_()
Timer callback for ensureBackChannel_.
|
code » | ||||||
|
onStartForwardChannelTimer_(opt_retryRequest)
Timer callback for ensureForwardChannel
Arguments:
|
code » | ||||||
|
open_()
Establishes a new channel session with the the server.
|
code » | ||||||
|
outstandingRequests_()
⇒
Returns the number of outstanding requests.
Returns:
The number of outstanding requests to the server.
|
code » | ||||||
|
sendMap(map)
Sends a request to the server. The format of the request is a Map data
structure of key/value pairs. These maps are then encoded in a format
suitable for the wire and then reconstituted as a Map data structure that
the server can process.
Arguments:
|
code » | ||||||
|
setAllowChunkedMode(allowChunkedMode)
Sets whether chunked mode is allowed. In certain debugging situations, it's
useful for the application to have a way to disable chunked mode for a user.
Arguments:
|
code » | ||||||
|
setAllowHostPrefix(allowHostPrefix)
Sets whether the channel allows the use of a subdomain. There may be cases
where this isn't allowed, for example, logging in with troutboard where
using a subdomain causes Apache to force the user to authenticate twice.
Arguments:
|
code » | ||||||
|
setChannelDebug(channelDebug)
Set the browserchannel logger.
TODO: Add interface for channel loggers or remove this function.
Arguments:
|
code » | ||||||
|
setExtraHeaders(extraHeaders)
Sets extra HTTP headers to add to all the requests sent to the server.
Arguments:
|
code » | ||||||
|
setFailFast(failFast)
When set to true, this changes the behavior of the forward channel so it
will not retry requests; it will fail after one network failure, and if
there was already one network failure, the request will fail immediately.
Arguments:
|
code » | ||||||
|
setHandler(handler)
Sets the handler used for channel callback events.
Arguments:
|
code » | ||||||
|
signalError_(error)
Signals an error has occurred.
Arguments:
|
code » | ||||||
|
startBackChannel_()
Begins a new back channel operation to the server.
|
code » | ||||||
|
startForwardChannel_(opt_retryRequest)
Begins a new forward channel operation to the server.
Arguments:
|
code » | ||||||
|
testConnectionBlocked(testChannel)
Callback from BrowserTestChannel for when the channel is blocked.
Arguments:
|
code » | ||||||
|
testConnectionFailure(testChannel, errorCode)
Callback from BrowserTestChannel for when the channel has an error.
Arguments:
|
code » | ||||||
|
testConnectionFinished(testChannel, useChunked)
Callback from BrowserTestChannel for when the channel is finished.
Arguments:
|
code » | ||||||
|
testGoogleComCallback_(networkUp)
Callback for testGoogleCom during error handling.
Arguments:
|
code » |
|
backChannelRequest_
:
The ChannelRequest object for the backchannel.
|
Code » | |
|
backChannelTimerId_
:
Timer identifier for asynchronously making a back channel request.
|
Code » | |
|
backChannelUri_
:
The absolute URI for the backchannel request.
|
Code » | |
|
connectionTest_
:
The BrowserTestChannel object which encapsulates the logic for determining
interesting network conditions about the client.
|
Code » | |
|
extraHeaders_
:
Extra HTTP headers to add to all the requests sent to the server.
|
Code » | |
|
extraParams_
:
Extra parameters to add to all the requests sent to the server.
|
Code » | |
|
failFast_
:
Whether to fail forward-channel requests after one try, or after a few tries.
|
Code » | |
|
forwardChannelRequest_
:
The current ChannelRequest object for the forwardchannel.
|
Code » | |
|
forwardChannelTimerId_
:
Timer identifier for asynchronously making a forward channel request.
|
Code » | |
|
forwardChannelUri_
:
The absolute URI for the forwardchannel request.
|
Code » | |
|
handler_
:
The handler that receive callbacks for state changes and data.
|
Code » | |
|
hostPrefix_
:
A subdomain prefix for using a subdomain in IE for the backchannel
requests.
|
Code » | |
|
lastArrayId_
:
The array identifier of the last array received from the server for the
backchannel request.
|
Code » | |
|
lastStatusCode_
:
The last status code received.
|
Code » | |
|
nextRid_
:
The next id to use for the RID (request identifier) parameter. This
identifier uniquely identifies the forward channel request.
|
Code » | |
|
path_
:
The relative path (in the context of the the page hosting the browser
channel) for making requests to the server.
|
Code » | |
|
useChunked_
:
Whether the client's network conditions can support chunked responses.
|
Code » |
|
goog.net.BrowserChannel.createChannelRequest(channel, channelDebug, opt_sessionId, opt_requestId, opt_retryId)
⇒
Instantiates a ChannelRequest with the given parameters. Overidden in tests.
Arguments:
Returns:
The created channel request.
|
code » | ||||||
|
goog.net.BrowserChannel.endExecutionHook_()
No description.
|
code » | ||||||
|
Returns the singleton event target for stat events.
Returns:
The event target for stat events.
|
code » | ||||||
|
Returns whether or not the given error/status combination is fatal or not.
On fatal errors we immediately close the session rather than retrying the
failed request.
|
code » | ||||||
|
goog.net.BrowserChannel.notifyStatEvent(stat)
Helper function to call the stat event callback.
Arguments:
|
code » | ||||||
|
goog.net.BrowserChannel.notifyTimingEvent(size, rtt, retries)
Helper function to notify listeners about POST request performance.
|
code » | ||||||
|
goog.net.BrowserChannel.onEndExecution()
No description.
|
code » | ||||||
|
goog.net.BrowserChannel.onStartExecution()
No description.
|
code » | ||||||
|
goog.net.BrowserChannel.setEndThreadExecutionHook(endHook)
Allows the application to set an execution hooks for when BrowserChannel
stops processing requests. This is useful to track timing or logging
special information. The function takes no parameters and return void.
Arguments:
|
code » | ||||||
|
goog.net.BrowserChannel.setStartThreadExecutionHook(startHook)
Allows the application to set an execution hooks for when BrowserChannel
starts processing requests. This is useful to track timing or logging
special information. The function takes no parameters and return void.
Arguments:
|
code » | ||||||
|
Wrapper around SafeTimeout which calls the start and end execution hooks
with a try...finally block.
|
code » | ||||||
|
goog.net.BrowserChannel.startExecutionHook_()
No description.
|
code » |
|
Maximum number of attempts to connect to the server for back channel
requests.
|
Code » | |
|
Events fired by BrowserChannel and associated objects
|
Code » | |
|
Maximum number of attempts to connect to the server for forward channel
requests.
|
Code » | |
|
The timeout in milliseconds for a forward channel request.
|
Code » | |
|
When retrying for an inactive channel, we will multiply the total delay by
this number.
|
Code » | |
|
Magic response cookie that is the response for forward channel requests.
|
Code » | |
|
Default timeout in MS before the initial retry. Subsequent retries will be
slower.
|
Code » | |
|
We will add a random time between 0 and this number of MS to retries to
the retry time for this request.
|
Code » | |
|
The version of the protocol used.
|
Code » | |
|
Singleton event target for firing stat events
|
Code » |


Email<EMAIL_ADDRESS>Office: Rm.4203, Academic Building, Hong Kong University of Science and Technology, Clear Water Bay, Kowloon, Hong Kong
© 2020
I am a PhD candidate from Human Computer Interaction Intiative at The Hong Kong University of Science and Technology, supervised by Prof. Qiong Luo and Prof. Xiaojuan Ma. Before joining HKUST, I earned my Bachelor degree in Software engineering at Shandong University in 2019.
"A Postcard from Your Food Journey in the Past": Promoting Self-Reflection on Social Food
Posting
Zhida Sun, Sitong Wang, Wenjie Yang, Onur Yürüten, Chuhan SHI, and Xiaojuan Ma.
Proceedings of the Designing Interactive Systems Conference, 2020.
[link]
[presentation: Youtube]
[presentation: Vimeo]
Software engineer
Industry Baseline Solution Development Center
Huawei Technologies Co. Ltd., Su Zhou, China


Why acyclic holds
Imagine starting at Root and following the
contents relation. Suppose you found a cyclic
path and followed it. At some point, you will encounter a
directory which you have already visited.
- The duplicated directory cannot be the root, since the root has
no parent (and we have constrained the contents and parent
relations to be reciprocal).
- The duplicated directory cannot be a non-root directory, say
d, since that would mean that d has two parents
(but that cannot be the case since the parent relation maps to
single directory, not a set of directories).
Thus a cycle cannot exist.


Because of the changing world, the eighth OMNeT++ Community Summit will be held virtually from Wednesday to Friday, September 8-10, 2021.
OMNeT++ is a public-source, component-based, modular and open-architecture simulation environment with strong GUI support and an embeddable simulation kernel. It is designed to simulate discrete event systems, with the simulation of communication networks as one of its primary application areas.
In continuation of the history of the International Workshop on OMNeT++ and seven very successful editions of its reincarnation, the OMNeT++ Community Summit, we continue to hold a yearly open meeting for all OMNeT++ community members with less costs and more interaction possibilities. The Community Summit provides a forum for tutorials, discussion sessions and presentations on recent developments and novel ideas in the area of simulation and modeling, with a focus on the OMNeT++ simulation environment.
The first seven Summits in Hamburg, Zurich, Brno, Bremen, Pisa, Hamburg and a virtual one were huge successes with lively discussions, keynotes, tutorials, panels, presentations, and demonstrations of ongoing and finalized research covering many aspects of OMNeT++-related research.
The OMNeT++ Summit intends to be a lively event with a lot of discussions. A wide range of presentations and interactive sessions regarding specific topics will be held. There will be enough time to discuss about the different parts of OMNeT++ and related simulation and modeling questions. The event will be fully virtual. All times are Central European Summer Time (GMT+2). Participation is for free, but participants need to register and will receive connection info via email.
| A | Peter Danielis, Helge Parzyjegla, Gero Mühl, Eike Schweissguth and Dirk Timmermann | Frame Replication and Elimination for Reliability in Time-Sensitive Networks (paper, slides, recording) |
| B | Heinz-Peter Liechtenecker and Raphael Riebl | Towards a modern CMake workflow (paper, slides, recording) |
| C | Matthias Rupp, Stefan Schuhbäck and Lars Wischhof | Coupling Microscopic Mobility and Mobile Network Emulation for Pedestrian Communication Applications (paper, slides, recording) |
| D | Musab Ahmed Eltayeb Ahmed, Konrad Fuger, Sebastian Lindner, Fatema Khan and Andreas Timm-Giel | A Tutorial on Trace-based Simulations of Mobile Ad-hoc Networks on the Example of Aeronautical Communications (paper, slides, recording) |
| E | Edward Longman, Mohammed El-Hajjar and Geoff V. Merrett | Intermittent Opportunistic Routing Components for the INET Framework (paper, slides, recording) |
| F | Aiden Valentine and George Parisis | Developing and experimenting with LEO satellite constellations in OMNeT++ (paper, slides, recording) |
| G | Alessandro Noferi, Giovanni Nardini, Giovanni Stea and Antonio Virdis | Deployment and configuration of MEC apps with Simu5G (paper, slides, recording) |
| H | Marcin Bosk, Marija Gajic, Susanna Schwarzmann, Stanislav Lange and Thomas Zinne | HTBQueue: A Hierarchical Token Bucket Implementation for the OMNeT++/INET Framework (paper, slides, recording) |
| I | Vladimír Veselý and Jan Zavřel | Quality Control Methodology for Simulation Models of Computer Network Protocols (paper, slides, recording) |
| J | Tobias Haugg, Mohammed Fazel Soltani, Timo Häckel, Philipp Meyer, Franz Korf and Thomas Schmidt | Simulation-based Evaluation of a Synchronous Transaction Model for Time-Sensitive Software-Defined Networks (paper, slides, recording) |
| K | Asanga Udugama | inbaverSim: An OMNeT++ Model Framework for Content Centric Networking (paper, slides, recording) |
| 1 | Kentaro "zigen" Teramoto (Mercari R4D, Tokyo, Japan) | Running OMNeT++ in Web Browser (recording) |
| 2 | Jens Dede, Thenuka Karunathilake, Asanga Udugama, Anna Förster (University of Bremen) | Benchmarking Opportunistic Networks as a Service using the OPS Model Framework of OMNeT++ (recording) |
| i | Edward Longman | Improve Lifecycle Operation Coverage for INETThe hackathon idea will allow experts in each of the respective layered modules to build and improve on the suitability of the INET stack to simulate networks with energy limited nodes and to represent the node failures and restart operations. It will increase the attractiveness of OMNeT as a suitable network simulator for intermittently-powered networks and improve the use of OMNeT as a network simulation teaching tool. |
| ii | Vladimír Veselý and Jan Zavřel | Improving the Operation of BGP in INETBorder Gateway Protocol (BGP) is a routing protocol that connects different ISPs and alike, essentially providing a unified way for exchanging reachability information on the Internet. The current version, BGP4, is standardized in RFC 4271, released in 2006. BGP is the only widely used EGP, and we believe the quality of the BGP model in INET to be crucial for the community. However, the current BGP implementation in INET has some shortcomings. We worked hard to bring improvements to primary aspects of the model. We implemented support for IPv6, removed dependency on OSPF, revised the configuration, and much more. This improved model builds upon the efforts of Mani Amoozadeh and Adrián Novák. It expands the functionality even further while maintaining the readability and patterns of the current model. We are excited to propose this topic for OMNeT++ Summit 2021 hackathon. |
| iii | Wolfgang Wallner | OMNeT Utils: A library with useful OMNeT++ utilitiesThe ptp-sim project implements simulation models for clocks, clock noise, and the simulation of time synchronization via the Precision Time Protocol (PTP)[1] in OMNeT++. The implementation was done as part of a master thesis [2], and the results were published as an open-source project1. An overview was presented at the 3rd OMNeT++ Community Summit in 2016 [3]. While implementing ptp-sim, several challenges where encoutered, and the resulting implementation of the solutions might be interesting for other users of OMNeT++. For this purpose, they have been separated out into an own subproject, referred to as OMNeT Utils2. |
| iv | Frauke Oest, Malin Radtke, and Emilie Frost | Coupling of the co-simulation framework mosaik with OMNeT++In the domain of smart energy systems, co-simulation is used to connect heterogeneous sim- ulators representing e.g., power plants, analysis or control strategies (for example multi-agent systems). The co-simulation framework mosaik is able to orchestrate the data exchange and time synchronisation between individual simulators and simulates in discrete time and in dis- crete events. The latter functionality enables the efficient coupling of communication simulators, where events are happening sporadically and a fine-grained time resolution is needed. This project aims to integrate OMNeT++ as a communication simulator for mosaik in order to simulate the data exchange between mosaik simulators more realistically. Therefore, mosaik messages should be simulated through a OMNeT- and INET-based network, so that communi- cation statistics can be measured and made available for mosaik simulators. We are especially interested in integrating end-2-end delay information from OMNeT++ into the scheduling of messages in mosaik. |
| v | Sanaz Afzali | Channel Hopping in IEEE 802.15.4 Implementation of INETChannel hopping is a technique used in MAC protocols to improve throughput in wireless networks. We are currently working on extending the 802.15.4 implementation of the INET model framework to enable the Time Slotted Channel Hopping (TSCH) extensions. Therefore, we would like to propose the above topic as a Hackathon proposal to discuss our experiences and issues with the OMNeT community. |
| vi | Raphael Riebl | Upgrading V2X Simulation Framework Artery Depending on the interests of the actually attending participants, I can image to address a variety of topics including any open issue ticket on GitHub. For example: finally switch to INET 4.x, add support for Simu5G, add some third-party frameworks only on-demand (currently everything is loaded as git submodule), redesign V2X sockets, switching from "old" TraCI implementation to the new libsumo for node mobility. |
| vii | Daniel Stolpmann | Machine Learning in OMNeT++While Machine Learning (ML) gets increasingly popular in the communication networks re- search community, the use of OMNeT++ in this particular area is sparse. The objective of this hackathon is to exchange ideas and try out different ways to use ML frameworks such as Tensor- Flow1 or PyTorch2 in OMNeT++. The outcomes of this hackathon should be made available to the community in form of documentation, tutorials, example projects and pre-build environments such as Docker3 containers. This will help newcomers to get started with ML in OMNeT++ and can increase the use of OMNeT++ in this research area. |
| viii | Attila Török, OMNeT++ Team | Analysis Tool Interactive Workshop Based on YOUR QuestionsIf you plan to use the new Python based analysis tool in OMNeT++ 6 and you have questions how to do it optimally, bring your problems here to discuss and work on them. |
| 09:00 - 09:15 | Welcome and ConverStation assignment | main session |
| 09:15 - 10:00 | ConverStation Session 1 | AFrame Replication and Elimination for Reliability in Time-Sensitive Networks, BTowards a modern CMake workflow, CCoupling Microscopic Mobility and Mobile Network Emulation for Pedestrian Communication Applications |
| 10:30 - 11:15 | Demo 1: Running OMNeT++ in Web Browser | Kentaro "zigen" Teramoto (main session) |
| 11:15 - 12:00 | ConverStation Session 2 | DA Tutorial on Trace-based Simulations of Mobile Ad-hoc Networks on the Example of Aeronautical Communications, EIntermittent Opportunistic Routing Components for the INET Framework, FDeveloping and experimenting with LEO satellite constellations in OMNeT++ |
| 13:00 - 15:00 | Hackathon Slot 1 | iImprove Lifecycle Operation Coverage for INET, iiImproving the Operation of BGP in INET, iiiOMNeT Utils: A library with useful OMNeT++ utilities, ivCoupling of the co-simulation framework mosaik with OMNeT++ |
| 15:30 - 17:30 | Hackathon Slot 2 | iImprove Lifecycle Operation Coverage for INET, iiImproving the Operation of BGP in INET, iiiOMNeT Utils: A library with useful OMNeT++ utilities, ivCoupling of the co-simulation framework mosaik with OMNeT++ |
| 17:30 - 18:15 | ConverStation Session 3 | GDeployment and configuration of MEC apps with Simu5G, HHTBQueue: A Hierarchical Token Bucket Implementation for the OMNeT++/INET Framework |
| 18:15 - 19:00 | OMNeT++ 6.0 and beyond | András Varga, OMNeT++ Team (slides, recording) |
| 09:15 - 10:00 | ConverStation Session 4 | IQuality Control Methodology for Simulation Models of Computer Network Protocols, JSimulation-based Evaluation of a Synchronous Transaction Model for Time-Sensitive Software-Defined Networks, KinbaverSim: An OMNeT++ Model Framework for Content Centric Networking |
| 10:30 - 11:15 | Time Sensitive Networking in INET 4.4 | Levente Mészáros, OMNeT++ Team (slides, recording) |
| 11:15 - 12:00 | ConverStation Session 5 | AFrame Replication and Elimination for Reliability in Time-Sensitive Networks, DA Tutorial on Trace-based Simulations of Mobile Ad-hoc Networks on the Example of Aeronautical Communications, GDeployment and configuration of MEC apps with Simu5G, |
| 13:00 - 15:00 | Hackathon Slot 3 | vChannel Hopping in IEEE 802.15.4 Implementation of INET, viUpgrading V2X Simulation Framework Artery, viiMachine Learning in OMNeT++ |
| 15:30 - 17:30 | Hackathon Slot 4 | vChannel Hopping in IEEE 802.15.4 Implementation of INET, viUpgrading V2X Simulation Framework Artery, viiMachine Learning in OMNeT++ viiiAnalysis Tool Interactive Workshop Based on YOUR Questions |
| 17:30 - 18:15 | ConverStation Session 6 | EIntermittent Opportunistic Routing Components for the INET Framework, JSimulation-based Evaluation of a Synchronous Transaction Model for Time-Sensitive Software-Defined Networks, |
| 18:15 - 19:00 | Demo 2: Benchmarking Opportunistic Networks | Jens Dede, Thenuka Karunathilake, Asanga Udugama, Anna Förster (main session) |
| 09:15 - 10:00 | ConverStation Session 7 | HHTBQueue: A Hierarchical Token Bucket Implementation for the OMNeT++/INET Framework BTowards a modern CMake workflow, FDeveloping and experimenting with LEO satellite constellations in OMNeT++ |
| 10:30 - 11:15 | ConverStation Session 8 | CCoupling Microscopic Mobility and Mobile Network Emulation for Pedestrian Communication Applications IQuality Control Methodology for Simulation Models of Computer Network Protocols, KinbaverSim: An OMNeT++ Model Framework for Content Centric Networking |
| 11:15 - 12:15 | Panel discussion about TSN implementation in INET 4.4 | Levente Mészáros, OMNeT++ Team (recording) |
| 12:15 - 12:30 | Closure note | main session |
In case you want to contact the organizers, feel free to write an e-mail to: omnetsummit2021@easychair.org.


Climbing to the cramped kennels at the very top of the Tarasin Palace, Bethamin held her writing board carefully. Sometimes the ink jar’s cork came loose, and ink spots were difficult to remove from clothing. She kept herself as presentable at all times as if she had been called to appear before one of the High Blood. She did not talk to Renna, who had the inspection duty with her today, as they walked up the stairs. They were supposed to be doing an assigned task, not chattering idly. That was part of her reason. Where others jockeyed to be complete with their favorite damane, and goggled at the strange sights of this land, and speculated on the rewards to be gained here, she focused on her duties, asking for the most difficult marath’damane to tame to the a’dam, working twice as hard and twice as long as anyone else.
The rain had stopped, finally, leaving the kennels in silence. The damane would get some exercise at least, today—most grew sulky if confined to the kennels too long, and these makeshift kennels were decidedly confining—but regrettably, she was not assigned to walking today. Renna never was, though once she had been Suroth’s best trainer, and well respected. A little harsh, sometimes, but highly skilled. Once, everyone had said she would soon be made der’sul’dam in spite of her youth. Matters had changed. There were always more sul’dam than damane, yet no one could recall Renna being complete since Falme, her or Seta, whom Suroth had taken into personal service after Falme. Bethamin enjoyed gossiping over wine about the Blood and those who served them as much as anyone else, yet she never ventured any opinion when the talk turned to Renna and Seta. She thought of them often, though.
“You start on the other side, Renna,” she ordered. “Well? Do you want to be reported to Essonde for laziness yet again?”
Before Falme, the shorter woman had been nearly overpowering in her self-assurance, but a muscle twitched in her pale cheek, and she gave Bethamin a sickly, obsequious smile before hurrying into the kennel’s warren of narrow passages patting at her long hair as though afraid it might be disordered. Everyone except Renna’s closest friends bullied her at least a little, repaying her former lofty pride. To do otherwise was to mark yourself out, something Bethamin avoided except in carefully chosen ways. Her own secrets were buried as deeply as she could bury them, and she held silent about the secrets no one knew she was aware of, but she wanted to fix in everyone’s mind that Bethamin Zeami was the image of the perfect sul’dam. Absolute perfection was what she strove for, in herself and in the damane she trained.
She set about her inspection briskly and efficiently, checking that the damane had kept themselves and their individual kennels neat, making a short notation in her neat hand on the top page pinned to the writing board when one had failed to, and she did not dawdle, except to give out hard candies to a few who were doing particularly well in the training. Most of those she had been complete with greeted her entrance with smiles even as they knelt. Whether from the Empire or from this side of the ocean, they knew she was firm yet fair. Others did not smile. For the most part, the Atha’an Miere damane met her with stony faces as dark as her own, or sullen anger they seemed to believe they were concealing.
She did not mark their anger down for punishment, as some would have. They still thought they were resisting, but unseemly demands for the return of their garish jewelry already were a thing of the past, and they knelt and spoke properly. A new name was a useful tool with the most difficult cases, creating a break with what was done and gone, and they answered to theirs, however reluctantly. Reluctance would fade, along with scowls, and eventually they would hardly remember they ever had other names. It was a familiar pattern, and unfailing as sunrise. Some accepted immediately, and some went into shock at learning what they were. Always there were a handful who gave ground grudgingly over months, while with others, one day it was shrieked protests that a terrible mistake had been made, that they could never have failed the tests, and the next day came acceptance and calm. The details differed on this side of the ocean, but here or in the Empire, the end result remained the same.
For two of the damane she made notes that had nothing to do with neatness. Zushi, an Atha’an Miere damane even taller than she herself, was certainly marked for a switching. Her dress was rumpled, her hair uncombed, her bed unmade. But her face was swollen from crying, and no sooner had she knelt than a new set of sobs racked her, tears streaming down her cheeks. The gray dress that had been fitted on her so carefully now hung loosely, and she had not been plump to begin with. Bethamin had named Zushi herself, and she felt a special concern. Unclipping the steel-nibbed pen, she dipped it and wrote a suggestion that Zushi be moved from the Palace to somewhere she could be kept in a double kennel with a damane from the Empire, preferably one experienced in becoming heart-friends with newly collared damane. Sooner or later, that always put an end to tears.
She was not sure Suroth would allow it, though. Suroth had claimed these damane for the Empress, of course—anyone who owned a tenth so many personally would be suspected of plotting rebellion, or even accused outright—yet she behaved as though they were her own property. If Suroth disallowed, some other way would have to be found. Bethamin refused to lose a damane to despondency. She refused to lose a damane for any reason! The second to receive a special comment was Tessi, and she expected no objections there.
The Illianer damane knelt gracefully, hands folded at her waist, as soon as Bethamin opened the door. Her bed was made, her extra gray dresses hung neatly on their pegs, her brush and comb were laid out precisely on her washstand, and the floor had been swept. Bethamin expected no less. Tessi had been neat from the start. She was fleshing out nicely now that she had learned to clean her plate. Other than treats, damane’s diets were regulated strictly; an unhealthy damane was a waste. Tessi would never be decked in ribbons and entered in the competitions for the prettiest damane, though. Her face seemed perpetually angry even in repose. But today she wore a slight smile that Bethamin was sure had been in place before she entered. Tessi was not one she expected smiles from, not yet.
“How is my little Tessi feeling today?” she asked.
“Tessi do feel very well,” the damane replied smoothly. Always before she had had to struggle to speak properly, and had earned her latest switching for outright refusal only yesterday.
Fingering her chin thoughtfully, Bethamin studied the kneeling damane. She was suspicious of any damane who had called herself Aes Sedai. History fascinated her, and she had even read translations from the myriad of languages that had existed before the Consolidation began. Those ancient rulers reveled in their murderous, capricious rule, and delighted in setting down how they came to power and how they crushed neighboring states and undermined other rulers. Most had died by assassination, often at the hands of their own heirs or followers. She knew very well what Aes Sedai were like.
“Tessi is a good damane,” she murmured warmly, taking one of the hard candies from the twist of paper in her belt pouch. Tessi leaned forward to receive it and kiss her hand in thanks, but the smile slipped a little, though it was back by the time she stuffed the red candy into her mouth. So. It was like that, was it? Pretending to accept in order to lull the sul’dam was not unknown, but given what Tessi had been, very likely she was plotting escape as well.
Back out in the narrow hallway, Bethamin wrote a strong suggestion that Tessi’s training be redoubled, along with her punishments, and her rewards be made sporadic, so she could never be sure that even perfection would earn so much as a pat on the head. It was a harsh method, one she normally avoided, but for some reason it turned even the most recalcitrant marath’damane into a supple damane in a remarkably short time. It also produced the meekest of damane. She disliked breaking a damane’s spirit, yet Tessi needed to be broken to the a’dam so she could forget the past. She would be happier for it, in the end.
Finishing ahead of Renna, Bethamin waited at the foot of the stairs until the other sul’dam came down. “Take this to Essonde when you take yours,” she said, thrusting her writing board at Renna before she cleared the final step. Unsurprisingly, Renna accepted the task as meekly as she had accepted the earlier order, and hurried away eyeing the extra writing board as though wondering whether the pages held a report on her. She was a very different woman than she had been before Falme.
Fetching her cloak and leaving the Palace, Bethamin intended to return to the inn where she was forced to share a bed with two other sul’dam, but only long enough to take some coin from her lockbox. The inspection had been her only duty today, and the rest of the hours were her own. For a change, instead of seeking extra assignments, she would spend them buying souvenirs. Perhaps one of those knives the local women wore at their necks, if she could find one without the gems they seemed to like on the hilt. And lacquerware, of course; that was as good here as any in the Empire, and the designs were so . . . foreign. It would be soothing to shop. She needed soothing.
The paving stones of the Mol Hara still glistened damply from the morning’s rain, and a pleasant tang of salt filled the air, reminding her of the village on the Sea of L’Heye where she had been born, though the freezing cold made her clutch her cloak around herself. It had never been cold in Abunai, and she had never become accustomed to it no matter how far she had traveled. Thoughts of home were no comfort, now, though. As she made her way through the crowded streets, Renna and Seta filled her head to the extent that she bumped into people and once almost walked right in front of a merchant’s train of wagons leaving the city. A shout from a wagon driver caught her attention, and she leaped back just in time. The wagon rumbled across the paving stones where she would have been standing, and the woman wielding the whip did not even glance at her. These foreigners had no idea of the respect due a sul’dam.
Renna and Seta. Everyone who had been at Falme had memories they wanted to forget, memories they would not talk about except when they drank too much. She did, too, only hers were not about the shock of battling half-recognized ghosts out of legend, or the horror of defeat, or mad visions in the sky. How often had she wished she had not gone upstairs that day? If only she had not wondered how Tuli was doing, the damane who had the marvelous skill with metals. But she had looked into Tuli’s kennel. And she had seen Renna and Seta frantically trying to remove a’dam from each other’s necks, shrieking with the pain, wavering on their knees from the nausea, and still fumbling at the collars. Vomit stained the fronts of their dresses. In their frenzy they had not noticed her backing away, horror-stricken.
Not simply horror at seeing two sul’dam revealed as marath’damane, but her own sudden personal terror. Often she thought she could almost see damane’s weaves, and she could always sense a damane’s presence and know how strong she was. Many sul’dam could; everyone knew it came from long experience at handling the a’dam. Yet the sight of that desperate pair roused unwanted thoughts, putting a different and frightening complexion on what she had always accepted. Did she almost see the weaves, or did she really see? Sometimes she thought she felt the channeling, too. Even sul’dam had to undergo the yearly testing, until their twenty-fifth naming day, and she had passed by failing every time. Only . . . There would be a new testing after Renna and Seta were discovered, a new testing to find the marath’damane who somehow had evaded the first. The Empire itself might tremble before such a blow. And with the image of Renna and Seta burned into her brain, she had known with total certainty that after those tests, Bethamin Zeami would no longer be a respected citizen. Instead, a damane called Bethamin would serve the Empire.
The shame curdled in her still. She had placed personal fears ahead of the needs of the Empire, ahead of everything she knew to be right and true and good. Battle came to Falme, and nightmare, but she had not rushed to complete herself with a damane and join the battle line. Instead, she had used the confusion to secure a horse and flee, to run as hard and as far as she could.
She realized she had stopped, staring into a seamstress’s shop window without really seeing what was on display inside. Not that she wanted to see. The blue dress with its lightning-marked red panels was the only one she had thought of wearing in years. And she certainly would not wear something that exposed her so indecently. Skirts swirling about her ankles, she walked on, but she could not shake Renna and Seta from her thoughts, or Suroth.
Obviously Alwhin had found the collared pair of sul’dam and reported them to Suroth. And Suroth had sheltered the Empire by protecting Renna and Seta, dangerous as that was. What if they suddenly began channeling? Better perhaps for the Empire if she had arranged their deaths, though killing a sul’dam was murder even for the High Blood. Two suspicious deaths among the sul’dam would certainly have brought in Seekers. So Renna and Seta were free, if it could be called that when they were never allowed to be complete. Alwhin had done her duty, and been honored by becoming Suroth’s Voice. Suroth had done her duty as well, however distasteful. There was no new testing. Her own flight had been for nothing. And if she had remained, she would not have ended up in Tanchico, a nightmare she wanted to forget even more than she did Falme.
A squad of the Deathwatch Guards marched by, resplendent in their armor, and Bethamin paused to watch them pass. They left a wake through the crowd like a greatship under full sail. There would be joy in the city, in the land, when Tuon finally revealed herself, and celebrations as though she had just arrived. She felt a guilty pleasure at thinking of the Daughter of the Nine Moons so, as when she had done something forbidden as a child, though of course, until Tuon removed her veil, she was merely the High Lady Tuon, no higher than Suroth. The Deathwatch Guards tramped on, dedicated heart and soul to Empress and Empire, and Bethamin went in the opposite direction. Appropriately, since she was dedicated heart and soul to preserving her own freedom.
The Golden Swans of Heaven was a grand name for a tiny inn squeezed between a public stable and a lacquerware shop.  Packed with them, in fact, at least once night came. Bethamin was lucky to have only two bedmates. Ordered to accommodate as many as she could, the innkeeper pushed four and five into a bed when she thought they would fit. Still, the bedding was clean and the food quite good, if peculiar. And given that the alternative was likely a hayloft, she was glad to share.
At this hour, the round tables in the common room were empty. Some of the sul’dam living there surely had duties, and the rest simply wanted to avoid the innkeeper. Arms folded, frowning, Darnella Shoran was watching several serving women sweep the green-tiled floor industriously. A skinny woman with gray hair worn rolled on the nape of her neck and a long jaw that gave her a belligerent appearance, she might have been a der’sul’dam in spite of the ridiculous knife she wore, its hilt studded with cheap red and white gems. Supposedly the serving women were free, but they jumped like property whenever the innkeeper spoke.
Bethamin jumped slightly herself when the woman rounded on her. “You are aware of my rules concerning men, Mistress Zeami?” she demanded. After all this time, the slow way these people talked still sounded odd. “I’ve heard about your foreign ways, and if that is how you are, it is your business, but not under my roof.
The innkeeper frowned at her in suspicion. “Well, he came around asking for you by name. A pretty, yellow-haired man. Not a boy, but not very old, either. One of your lot, dragging his words out so you could hardly understand him.”
Making her tone placating, Bethamin did her best to convince the woman that she did not know anyone who met that description, and that she had no time for men with her duties. Both were true, yet she would have lied if necessary. The Golden Swans had not been commandeered, and three in a bed was much preferable to a hayloft. She tried to find out whether the woman might like some small gift when she went shopping, but the woman actually seemed offended when she suggested a knife with more colorful gems. She had not meant anything expensive, nothing in way of a bribe—not really—yet Mistress Shoran seemed to take it so, huffing and frowning indignantly. In any case, she was not sure she succeeded in changing the woman’s mind by a hair. For some reason, the innkeeper seemed to believe they spent all their free hours engaged in debauchery. She was still frowning when Bethamin started up the railless stairs at the side of the common room pretending that she had not a thought in her mind beyond shopping.
The man’s identity did concern her, though. She certainly did not recognize the description. In all likelihood, he had come about her inquiries, but if that was the case, if he had been able to trace her here, then she had been insufficiently discreet. Perhaps dangerously so. Still, she hoped he came back. She needed to know. She needed to!
Opening the door to her room, she froze. Impossibly, her iron lockbox sat on the bed with its lid thrown open. That was a very good lock, and the only key lay at the bottom of her belt pouch. The thief was still there, and oddly, he was thumbing through her diary! How in the Light had the man gotten past Mistress Shoran’s surveillance?
Paralysis lasted only an instant. Snatching her belt knife from its sheath, she opened her mouth to scream for help.
The fellow’s expression never changed, and he neither tried to run nor to attack her. He just took something small from his pouch and held it up where she could see it, and her breath turned to lead in her throat. Numbly she fumbled her knife back into its scabbard and held out her hands to show him she held no weapon and was not attempting to reach one. Between his fingers was a gold-edged ivory plaque, engraved with a raven and a tower. Suddenly she really saw the man, yellow-haired and in his middle years. Perhaps he was pretty, as Mistress Shoran had said, but only a madwoman would think of a Seeker for Truth in that fashion. Thank the Light she had not recorded anything dangerous in her diary. But he must know. He had asked for her by name. Oh, Light, he must know!
“Close the door,” he said quietly, returning the plaque to his pouch, and she obeyed. She wanted to run. She wanted to plead for mercy. But he was a Seeker, so she stood there, trembling. To her surprise, he dropped her diary back into the lockbox and gestured to the room’s single chair. “Sit. There is no need for you to be uncomfortable.”
Slowly, she hung up her cloak and settled onto the chair, for once not caring how uncomfortable the strange ladderlike back was. She did not try to hide her shivers. Even one of the Blood, even one of the High Blood, might quake at being questioned by a Seeker. She had a small hope. He had not simply ordered her to accompany him. Perhaps he did not know after all.
“You have been asking questions about a ship captain named Egeanin Sarna,” he said. “Why?”
Hope faltered with a thud she could feel in her chest. “I was looking for an old friend,” she quavered. The best lies always contained as much truth as possible. “We were at Falme together. I don’t know whether she survived.” Lying to a Seeker was treason, but she had committed her first treason in deserting during the battle at Falme.
“She lives,” he said curtly. He sat down on the end of the bed without taking his eyes from her. They were blue, and made her want her cloak back. “She is a hero, a Captain of the Green, and the Lady Egeanin Tamarath, now. Her reward from the High Lady Suroth. She is also here in Ebou Dar. You will renew your friendship with her. And report to me who she sees, where she goes, what she says. Everything.”
Bethamin clamped her jaws to keep from laughing hysterically. He was after Egeanin, not her. The Light be praised! The Light be praised in all its infinite mercy! She had only wanted to know if the woman still lived, if she had to take precautions. Egeanin had freed her once, yet in the ten years Bethamin had known her before that, she had been a model of duty. It had always seemed possible she would repent that one aberration no matter the cost to herself, but, wonder of wonders, she had not. And the Seeker was after her, not . . . ! Possibilities reared up in front of her, certainties, and she no longer wanted to laugh. Instead, she licked her lips.
“How . . . ? How can I renew our friendship?” It had never been friendship anyway, merely acquaintance, but it was too late to say that now. “You tell me she’s been raised to the Blood. Any overture must come from her.” Fear emboldened her. And panicked her as it had at Falme. “Why do you need me to be your Listener? You can take her for questioning any time you decide to.” She bit the inside of her cheek to still her tongue. Light, she wanted nothing less than she wanted him to do that. Seekers were the secret hand of the Empress, might she live forever; in the Empress’s name, he could put even Suroth to the question, or Tuon herself. True, he would die horribly if it turned out he had been in error, but the risk was small with Egeanin. She was only of the low Blood. If he put Egeanin to the question . . .
To her shock, rather than simply telling her to obey, he sat studying her. “I will explain certain things,” he said, and that was a greater shock. Seekers never explained, so she had heard. “You are no use to me, or the Empire, unless you survive, and you will not survive if you fail to understand what you face. If you reveal a word of what I tell you to anyone, you will dream of the Tower of the Ravens as a respite from where you will find yourself. Listen, and learn. Egeanin was sent to Tanchico before the city fell to us, among other things as part of the effort to find sul’dam who had been left behind at Falme. Strangely, she found none, though others did, like those who aided your own return. Instead, Egeanin murdered the sul’dam she found. I put the charge to her my self, and she did not bother denying it. She did not even show outrage, or even indignation. As bad, she consorted in secret with Aes Sedai.” He said the name flatly, not with the normal disgust but rather like an accusation. “When she departed Tanchico, she was traveling on a ship commanded by a man named Bayle Domon. He made some disturbance at having his ship boarded and was made property. She bought him and immediately made him so’jhin, so plainly he is of some importance to her. Interestingly, she had brought the same man to the High Lord Turak in Falme. Domon engaged the High Lord’s regard to the extent that the fellow was often invited to converse with him.” He grimaced. “Do you have wine? Or brandy?”
Bethamin gave a start. “Lona has a flask of the local brandy, I think. It’s a rough drink . . . .”
He ordered her to pour him a cup anyway, and she obeyed hurriedly. She wanted to keep him talking, anything to delay the inevitable. She knew for a fact that Egeanin had not been killing sul’dam, yet her proof would condemn her to share Renna and Seta’s sour fate. If she was lucky. If this Seeker saw his duty to the Empire as Suroth had. He peered into the pewter cup, swirling the dark apple brandy while she took her seat again.
“The High Lord Turak was a great man,” he murmured. “Perhaps one of the greatest the Empire has ever seen. A pity his so’jhin decided to follow him into death. Honorable of them, but it makes it impossible to be sure Domon was in the band that murdered the High Lord.” Bethamin flinched. Sometimes the Blood died at one another’s hands, of course, but the word murder was never mentioned. The Seeker continued, still peering into his cup without drinking. “The High Lord had ordered me to watch Suroth. He suspected she was a danger to the Empire itself. His own words. And with his death, she managed to gain command of the Forerunners. I have no evidence that she ordered his death, but there is much that is suggestive. Suroth brought a damane to Falme, a young woman who was Aes Sedai,” again, the name was flat and hard, “and who somehow escaped the very day that Turak died. Suroth also has a damane in her entourage who was once Aes Sedai. She has never been seen uncollared, but . . . ” He shrugged, as though that were a thing of no moment. Bethamin’s eyes popped. Who would uncollar a damane? A well-trained damane was a treat and a joy, but as well unleash a drunken grolm! “It seems very likely she has a marath’damane hidden among her property, too,” he went on, just as if he were not listing crimes little lower than treason. “I believe Suroth gave the order for sul’dam who managed to reach Tanchico to be killed, perhaps in order to hide Egeanin’s meetings with Aes Sedai. You sul’dam always say you can tell a marath’damane at sight, correct?”
He looked up suddenly, and somehow she managed to meet those frozen eyes with a smile. His face could have belonged to any man, but those eyes . . . She was glad to be seated. Her knees were shaking so hard she was surprised it did not show through her skins. “It is not quite that easy, I’m afraid.” She almost succeeded in keeping her voice steady. “You . . . Surely you know enough to charge Suroth with the High Lord Turak’s m-m-murder.” If he took Suroth, there would be no need to involve her, or Egeanin.
“Turak was a great man, but my duty is to the Empress, may she live forever, and through her, to the Empire.” He drank the brandy down in one long swallow, and his face became as hard as his voice. “Turak’s death is dust beside the danger facing the Empire. The Aes Sedai of these lands seek power in the Empire, a return to the days of chaos and murder when no man could close his eyes at night knowing he would wake, and they are aided by a venomous worm of treachery boring from within. Suroth may not even be that worm’s head. For the Empire’s sake, I dare not take her until I can kill the whole worm. Egeanin is a thread I can follow to the worm, and you are a thread to Egeanin. So you will renew your friendship with her, whatever it takes. Do you understand me?”
“I understand, and I will obey.” Her voice shook, but what else could she say? The Light save her, what else could she say?


Deep Sea Wonders
with Hilary Goldywynn Post
Hillary is a sophomore art sculpture student at New York University, and has already won all the major international prizes for new painters, including the Divinity Circle, the International Painter's Medal, and the Academy of Paris Award. Hillary's CAC exhibit features paintings that contain only water images including waves, deep sea, and river.
An avid water sports participant, Hillary understands the water in many ways in which others do not, or may not ever have the opportunity. Her goal in creating the CAC exhibit was to share with others the beauty, power, and flow of natural bodies of water throughout the world. In addition to the display, Hilary also hosts a session on Tuesday called Deep Sea Wonders, which combines her love of deep sea diving and snorkeling, with instruction for capturing the beauty of underwater explorations on canvas.


NOTE: This document is still a work in progress!
Note: a11y is a synonym for accessibility.
The DAG features of the a11y side of Scenery are handled parallel to Node
s in Scenery. Each Node
with the
Accessibility trait added to its prototype has N AccessibleInstances based on the number of times it has been
added to the scene graph. The PDOM elements of each Node
are created and handled with AccessiblePeer.
There is
a 1x1 relationship of AccessibleInstance and AccessiblePeer.
The AccessiblePeer is the type that manages all HTML Elements. The Node is then thought to be "represented" in the PDOM by the AccessiblePeer's HTML Elements.


1. Graph represents all logical (Flows) and physical (ISLs) links between switches and their state.
2. One can drag the switches in any direction to have a better view of the connections.
3. Hovering over a switch or a physical link will show the details, resp.
4. Single click in case of physical link and double click in case of switch will redirect one to the details page of the clicked object.
5. Clicking on the physical link will redirect one to the details page of the ISL along with the graph of data being transferred through it.
6. Clicking on logical link will redirect one to the Flows LIST page that lists all the flows, present between the two switches, and their details in a tabular form.
7. Number mentioned on logical link represents the number of flows present between two switches.
8. Clicking, twice, on the switch will redirect one to the Switch details page along with the PORT DETAILS.
9. One can perform the following operations by using the button menu on the mid-right corner of the Canvas:
>> Search for the desired switch.
>> Maximize or Minimize the topology.
>> Reset the topology to its initial state.


Who is Henry Gabay, Derby County's potential new investor?
The London-based businessman is in advanced talks with the Rams about an investment partnership with current club owner Mel Morris
by Chris WatsonDerby County's quest to bring new investment into the club could soon be coming to a conclusion.
The Rams are understood to be in advanced talks over an investment partnership, and a deal could be completed by the end of this month.
The investor in question is Swiss/Turkish businessman Henry Gabay. So what more do we know about him?
Early days
Henry Isak Gabay was born in Turkey in September 1967 and educated in Switzerland.
He studied at the University of Geneva and graduated with a degree in finance and economics in 1991.
Career
In 1992, he joined Merril Lynch International, the wealth management division of the Bank of America.
He worked in the equity division of the company’s London and Geneva branches, and was responsible for setting up equity distribution for CEE and Russia for European Institutions.
In 1997, he took up a new job with Credit Suisse First Boston (CSFB) the multinational Swiss investment bank and financial holding company.
During his time here, he worked as head of equity sales for emerging markets, head of investment banking for Israel and Turkey, and as a director in London and New York.
Gabay left CSFB in 2000 in order to set up his own company.
In May 2002, he co-founded Duet Group - a "global alternative management company", which specialises in hedge funds, real estate and private equity.
He has developed the company into a global concern, with offices in London, New Delhi, New York, and Accra in Ghana.
The company has been particularly active in emerging and frontier markets.
Gabay is currently a board member of various Duet companies, including Dashen Brewery, Duet Consumer West Africa, and South Asian Real Estate Ltd.
In 2018, Duet Private Equity acquired the asset and wealth management firm Merit Capital.
Derby County on social media
If you want to follow all things Derby County via social media then this is the place to find out how.
Transfers, injuries, match-day videos and photos and the thoughts of the manager and his players, we’ve got you covered.
We’ll be bringing the very latest on the Rams throughout the week and around the clock.
Make sure you keep yourself updated with our social media accounts...
The Rams on social media...
Facebook: News, debate and nostalgia
Twitter: All the latest Rams news as it happens
For all your latest DCFC news, opinion, analysis and transfer gossip, click here
You can follow our Rams reporter Steve Nicholson on Twitter and his email address is<EMAIL_ADDRESS>The acquisition, led by Gabay, added roughly 2,000 clients to Duet's portfolio and expanded the group’s European wealth management platform.
He has been chairman of Merit Capital’s board of directors since August 2018, when the acquisition was officially approved by the National Bank of Belgium.
Based in Antwerp, Merit Capital is valued at $1.3billion, according to the Investor's Globe website.
Gabay currently lives in London.
On the Duet website, his "skills" are listed as hedge funds, private equity, alternative investments, emerging markets and real estate. And a section called What I'm Looking For, adds: "Interesting opportunities".
Derby County
New companies Rams Investment Limited and Rams Sports Management Limited have been established and posted on Companies House in recent weeks.
Both companies are controlled by Gabay, who is the co-founder and chief executive officer of the Duet Group, a global investment holding company containing private equity, wealth management and other investment companies.
Swiss national Gabay himself is not listed as a director of Rams Investment Limited; but is the director of Rams Sports Management Limited.
Amit Haria, who serves as Duet’s chief financial officer, is named as director of Rams Investment Limited.
Both companies give their registered office as being in Hill Street, London, the same address as Duet’s offices.


{% extends 'base.html' %} {% from 'macros.html' import ticket_type_select, priority_select, milestone_select, component_select with context %} {% block content %} {% if not user %}
I have files to attach to this ticket


Quick Links
Contact
HACKOTHSAV FOUNDATION
The Goal of Hackothsav is to support coders and the hackathon communities around the globe.
Raunak: +91<PHONE_NUMBER>
Ashuthosh: +91<PHONE_NUMBER>
The Goal of Hackothsav is to support coders and the hackathon communities around the globe.


--- layout: hackathon ---
The Hackathon is a competition, administered by the UQ Computing Society Hackathon committee. The judging panel will be made up of the Hackathon committee and industry sponsors as appropriate for each prize.
All decisions made by the judging panel will be considered final, with no further correspondence being entered into. This is a competition of skill; chance does not play any part in the competition.
Competing teams will have a maximum of four (4) people. Each team will nominate one person to liaise with the Hackathon committee, to ensure all other team members receive announcements from the organisers and that all relevant information is kept updated.
Each team is required to submit a number of items with their competition entry. These items shall include:
Entries to the competition will be judged by the Hackathon Judging Panel against criteria including:
The Hackathon will run over two days. Teams may register any time before the close of the competition, but may not commence work on their project until the opening of the competition.
Submissions must be received before 5:30pm Australian Eastern Standard Time (AEST) on the final day. This submission shall include all items as specified in the Judging Criteria. No requests for extensions will be granted.
Judging will take place in the week after the competition. Public voting will take place during this week, in order to determine the winner of the People’s Choice award. The Judging Panel will determine all other prizes for the competition. Winners shall be announced no later than two (2) weeks following the conclusion of the competition.
At least one team member must be over the age of 18. Each team shall have a minimum of one (1) UQ Computing Society member (as this is a UQ Computing Society competition). Individuals may become a member of the UQ Computing Society at any point in time before the conclusion of the competition. A person may only be a member of one team within the competition.
Entries are expected to be developed during the weekend of Hackathon. If it is found that an entry was developed before the weekend, that submission will be deemed ineligible for prizes. Use or extension of existing software, libraries or data sets is permitted. Please consult the Hackathon committee if you are unsure whether software, libraries or data sets may be ruled invalid.
The Judging Panel is not eligible to compete for prizes. Individuals from organisations or companies are ineligible for prizes sponsored by their organisation.
Each team may only submit one entry to the competition.
Teams agree to only include materials (including code, data, images, etc) that they have the right to use and release, consistent with these competition rules.
Entries must be of a suitable nature for the competition. A submission should not:
The Hackathon committee reserves the right to disqualify a team or submission that does not comply with the rules contained herein.
The UQ Computing Society Hackathon committee makes no representations or warranties of any kind, expressed or implied, in regard to any submissions or links published in relation to the Hackathon competition.


You must refresh the page before you can use SM for Chrome on your custom domain name for the first time.
It looks like you are not currently logged in as the owner of this website. You must log in to your website to use this extension.


drought mapping maize stress association genetic Plant tolerance gene Genet. Maize resistance Wang plant yield loci root trait Sci. Nat. QTL genes Zhang population variation water traits {border-style Science crop genome maize. natural panel px;} quantitative #ffffff;} Association Genome-wide Yang grain leaf Arabidopsis GWAS QTLs molecular Liu analysis breeding genome-wide using Appl. Natl. Thus, complex expression identified markers ./pnas. Acad. Biol. Proc. Theor. U.S.A. acid architecture method model plants ./ng. ./s--- DNA Drought GRMZMG Setter Tuberosa Zhao associated crops large new selection ./science. Genetic Huang Ribaut basis components knowledge study underlying Kang Physiol. SNP abscisic candidate effects related response rice studies ABA Bot. China However, Landi ZmVPP conditions conditions. cultivated different editing environmental genomic important improves linkage marker number polymorphisms populations production px; sequencing structure time wheat wild {font-family ./j.-...x Biotechnol. Crops Exp. Gao Identification Res. Salvi Sanguineti Zhou abiotic approach computational enable estimation example, font-size high human involved linear mechanisms network order regions reported salt single strategies tolerance. transcription variations Cell Hao Mao Mol. Nature Qin Rev. Semagn Yan better biomass control diversity double; favorable flowering food functional genotyping including increase major physiological plants. random regulatory responses result result, sequencing. significant soybean statistical studies. technology tolerance, transgenic tropical variance ./nature AVP Chen Crop Hung SNPs Song Tester ZmNAC accurate adaptation allele alleles amplified based border-color border-width cloning concentration consisting controlling design development dissect especially factors generated growth identification identify improvement inbred increased increases information kernel marker-assisted meet million mixed potential reveals rice. significantly solid; survival thousand traits. varieties various well-watered {font-style {font-weight ./S-()- ./j.fcr... ./ncomms ./nrg Agricultural Am. Analysis Brown Commun. Davey Feng Field Gao, Genetics Genome Gore H-pyrophosphatase Lebreton Mapping Messmer Molecular Moreover, New Osakabe PZA. Park Recently, Shinozaki Thudi Tian Tolerance Uga Vikram Warburton Xue Zea agronomic analyses analysis, approaches approximate background barley bold comprehensive considered content contributing courier; crops. cultivars decay directly ear efficient element em; enhance environments. family fragment global head identifies improve interval length levels likely lines loss mays metabolic methodologies methods mixed-model morphology multiple mutations nested network. nodal novel nucleotide power productivity protein pt;} region resulting senescence sequence strategy stress, systems tolerant umc used wheat.


- IColor3R - Interface in org.barghos.core.api.color
-
This interface grants access to all reading methods of an RGB-Color.
- IColor3W - Interface in org.barghos.core.api.color
-
This interface grants access to all writing methods of an RGB-Color.
- IColor4R - Interface in org.barghos.core.api.color
-
This interface grants access to all reading methods of an RGBA-Color.
- IColor4W - Interface in org.barghos.core.api.color
-
This interface grants access to all writing methods of an RGBA-Color.
- IHDRColor3R - Interface in org.barghos.core.api.color
-
This interface allows for selective reading of only HDR-RGB-Colors.
- IHDRColor3W - Interface in org.barghos.core.api.color
-
This interface allows for selective writing of only HDR-RGB-Colors.
- IHDRColor4R - Interface in org.barghos.core.api.color
-
This interface allows for selective reading of only HDR-RGBA-Colors.
- IHDRColor4W - Interface in org.barghos.core.api.color
-
This interface allows for selective writing of only HDR-RGBA-Colors.
- ILDRColor3R - Interface in org.barghos.core.api.color
-
This interface allows for selective reading of only LDR-RGB-Colors.
- ILDRColor3W - Interface in org.barghos.core.api.color
-
This interface allows for selective writing of only LDR-RGB-Colors.
- ILDRColor4R - Interface in org.barghos.core.api.color
-
This interface allows for selective reading of only LDR-RGBA-Colors.
- ILDRColor4W - Interface in org.barghos.core.api.color
-
This interface allows for selective writing of only LDR-RGBA-Colors.
- isAbove(int, int) - Static method in class org.barghos.core.Check
-
- isAbove(long, long) - Static method in class org.barghos.core.Check
-
- isAbove(float, float) - Static method in class org.barghos.core.Check
-
- isAbove(double, double) - Static method in class org.barghos.core.Check
-
- isAbove(int, int...) - Static method in class org.barghos.core.Check
-
- isAbove(long, long...) - Static method in class org.barghos.core.Check
-
- isAbove(float, float...) - Static method in class org.barghos.core.Check
-
- isAbove(double, double...) - Static method in class org.barghos.core.Check
-
- isAboveOOO(int, int...) - Static method in class org.barghos.core.Check
-
- isAboveOOO(long, long...) - Static method in class org.barghos.core.Check
-
- isAboveOOO(float, float...) - Static method in class org.barghos.core.Check
-
- isAboveOOO(double, double...) - Static method in class org.barghos.core.Check
-
- isBelow(int, int) - Static method in class org.barghos.core.Check
-
- isBelow(long, long) - Static method in class org.barghos.core.Check
-
- isBelow(float, float) - Static method in class org.barghos.core.Check
-
- isBelow(double, double) - Static method in class org.barghos.core.Check
-
- isBelow(int, int...) - Static method in class org.barghos.core.Check
-
- isBelow(long, long...) - Static method in class org.barghos.core.Check
-
- isBelow(float, float...) - Static method in class org.barghos.core.Check
-
- isBelow(double, double...) - Static method in class org.barghos.core.Check
-
- isBelowOOO(int, int...) - Static method in class org.barghos.core.Check
-
- isBelowOOO(long, long...) - Static method in class org.barghos.core.Check
-
- isBelowOOO(float, float...) - Static method in class org.barghos.core.Check
-
- isBelowOOO(double, double...) - Static method in class org.barghos.core.Check
-
- isEmpty(List<A>) - Static method in class org.barghos.core.Check
-
- isEmpty(A[]) - Static method in class org.barghos.core.Check
-
- isEmpty(String) - Static method in class org.barghos.core.Check
-
- isEqual(boolean, boolean) - Static method in class org.barghos.core.Check
-
- isEqual(int, int) - Static method in class org.barghos.core.Check
-
- isEqual(long, long) - Static method in class org.barghos.core.Check
-
- isEqual(float, float) - Static method in class org.barghos.core.Check
-
- isEqual(double, double) - Static method in class org.barghos.core.Check
-
- isEqual(String, String) - Static method in class org.barghos.core.Check
-
- isEqual(A, A) - Static method in class org.barghos.core.Check
-
- isEqual(boolean, boolean...) - Static method in class org.barghos.core.Check
-
- isEqual(int, int...) - Static method in class org.barghos.core.Check
-
- isEqual(long, long...) - Static method in class org.barghos.core.Check
-
- isEqual(float, float...) - Static method in class org.barghos.core.Check
-
- isEqual(double, double...) - Static method in class org.barghos.core.Check
-
- isEqual(String, String...) - Static method in class org.barghos.core.Check
-
- isEqual(A, A...) - Static method in class org.barghos.core.Check
-
- isEqualOOO(boolean, boolean...) - Static method in class org.barghos.core.Check
-
- isEqualOOO(int, int...) - Static method in class org.barghos.core.Check
-
- isEqualOOO(long, long...) - Static method in class org.barghos.core.Check
-
- isEqualOOO(float, float...) - Static method in class org.barghos.core.Check
-
- isEqualOOO(double, double...) - Static method in class org.barghos.core.Check
-
- isEqualOOO(String, String...) - Static method in class org.barghos.core.Check
-
- isEqualOOO(A, A...) - Static method in class org.barghos.core.Check
-
- isFalse(boolean) - Static method in class org.barghos.core.Check
-
- isFalse(boolean...) - Static method in class org.barghos.core.Check
-
- isFalseOOO(boolean...) - Static method in class org.barghos.core.Check
-
- isInBetween(int, int, int) - Static method in class org.barghos.core.Check
-
- isInBetween(long, long, long) - Static method in class org.barghos.core.Check
-
- isInBetween(float, float, float) - Static method in class org.barghos.core.Check
-
- isInBetween(double, double, double) - Static method in class org.barghos.core.Check
-
- isInBetween(int, int, int...) - Static method in class org.barghos.core.Check
-
- isInBetween(long, long, long...) - Static method in class org.barghos.core.Check
-
- isInBetween(float, float, float...) - Static method in class org.barghos.core.Check
-
- isInBetween(double, double, double...) - Static method in class org.barghos.core.Check
-
- isInBetweenOOO(int, int, int...) - Static method in class org.barghos.core.Check
-
- isInBetweenOOO(long, long, long...) - Static method in class org.barghos.core.Check
-
- isInBetweenOOO(float, float, float...) - Static method in class org.barghos.core.Check
-
- isInBetweenOOO(double, double, double...) - Static method in class org.barghos.core.Check
-
- isInRange(int, int, int) - Static method in class org.barghos.core.Check
-
- isInRange(long, long, long) - Static method in class org.barghos.core.Check
-
- isInRange(float, float, float) - Static method in class org.barghos.core.Check
-
- isInRange(double, double, double) - Static method in class org.barghos.core.Check
-
- isInRange(int, int, int...) - Static method in class org.barghos.core.Check
-
- isInRange(long, long, long...) - Static method in class org.barghos.core.Check
-
- isInRange(float, float, float...) - Static method in class org.barghos.core.Check
-
- isInRange(double, double, double...) - Static method in class org.barghos.core.Check
-
- isInRangeOOO(int, int, int...) - Static method in class org.barghos.core.Check
-
- isInRangeOOO(long, long, long...) - Static method in class org.barghos.core.Check
-
- isInRangeOOO(float, float, float...) - Static method in class org.barghos.core.Check
-
- isInRangeOOO(double, double, double...) - Static method in class org.barghos.core.Check
-
- isNull(A) - Static method in class org.barghos.core.Check
-
- isNull(A...) - Static method in class org.barghos.core.Check
-
- isNullOOO(A...) - Static method in class org.barghos.core.Check
-
- isNullOrEmpty(String) - Static method in class org.barghos.core.Check
-
- isNullOrEmpty(A[]) - Static method in class org.barghos.core.Check
-
- isNullOrEmpty(List<A>) - Static method in class org.barghos.core.Check
-
- isTrue(boolean) - Static method in class org.barghos.core.Check
-
- isTrue(boolean...) - Static method in class org.barghos.core.Check
-
- isTrueOOO(boolean...) - Static method in class org.barghos.core.Check
-
- isValueNull(ITup3fR) - Static method in class org.barghos.core.Check
-
- ITup2dR - Interface in org.barghos.core.api.tuple
-
This interface grants access to all reading methods of an 2-dimensional double tuple.
- ITup2dW - Interface in org.barghos.core.api.tuple
-
This interface grants access to all writing methods of an 2-dimensional double tuple.
- ITup2fR - Interface in org.barghos.core.api.tuple
-
This interface grants access to all reading methods of an 2-dimensional float tuple.
- ITup2fW - Interface in org.barghos.core.api.tuple
-
This interface grants access to all writing methods of an 2-dimensional float tuple.
- ITup2R - Interface in org.barghos.core.api.tuple
-
This interface grants access to all reading methods of an 2-dimensional tuple.
- ITup3dR - Interface in org.barghos.core.api.tuple
-
This interface grants access to all reading methods of an 3-dimensional double tuple.
- ITup3dW - Interface in org.barghos.core.api.tuple
-
This interface grants access to all writing methods of an 3-dimensional double tuple.
- ITup3fR - Interface in org.barghos.core.api.tuple
-
This interface grants access to all reading methods of an 3-dimensional float tuple.
- ITup3fW - Interface in org.barghos.core.api.tuple
-
This interface grants access to all writing methods of an 3-dimensional float tuple.
- ITup3R - Interface in org.barghos.core.api.tuple
-
This interface grants access to all reading methods of an 3-dimensional tuple.
- ITup4dR - Interface in org.barghos.core.api.tuple
-
This interface grants access to all reading methods of an 4-dimensional double tuple.
- ITup4dW - Interface in org.barghos.core.api.tuple
-
This interface grants access to all writing methods of an 4-dimensional double tuple.
- ITup4fR - Interface in org.barghos.core.api.tuple
-
This interface grants access to all reading methods of an 4-dimensional float tuple.
- ITup4fW - Interface in org.barghos.core.api.tuple
-
This interface grants access to all writing methods of an 4-dimensional float tuple.
- ITup4R - Interface in org.barghos.core.api.tuple
-
This interface grants access to all reading methods of an 4-dimensional tuple.
- ITupdR - Interface in org.barghos.core.api.tuple
-
This interface grants access to all reading methods of an n-dimensional double tuple.
- ITupdW - Interface in org.barghos.core.api.tuple
-
This interface grants access to all writing methods of an n-dimensional double tuple.
- ITupfR - Interface in org.barghos.core.api.tuple
-
This interface grants access to all reading methods of an n-dimensional float tuple.
- ITupfW - Interface in org.barghos.core.api.tuple
-
This interface grants access to all writing methods of an n-dimensional float tuple.
- ITupR - Interface in org.barghos.core.api.tuple
-
This interface grants access to all reading methods of an n-dimensional tuple.


Make sure the app is opened and then in the Azure Mobile Engagement Portal:
- Go to the "Reach" tab, and then select "Data Pushes".
- Click on "New data push".
- Fill the following values in the form:
- Name: Provide the name of the campaign to identify it.
- Category: Leave it as blank with no values.
- Content data type: Select "Text"
- Content of your data: { "isDiscountAvailable":true, "discountRateInPercent":10 }
- Finally, either send the test notification or create and activate the campaign. You will see the product discount applied when you navigate to the Product discount screen by clicking the "Silent Data Push Notification" button. You can also keep the Product discount screen open and see the discount getting applied as the data push is activated.


--- layout: post title: Plus Malin date: '2018-03-19T11:30:35+01:00' categories: - Storyboards - Advertising picture_url: https://film-Storyboards.tumblr.com/post/172036600299 --- - Fred De Loof - Hamlet - Lidl


About
This site is a photo history of a few visits to Seoul South Korea. An example image is here:
Map


Object
@objc(RealmSwiftObject)
open class Object : RLMObjectBase, ThreadConfined, RealmCollectionValue
Object
is a class used to define Realm model objects.
In Realm you define your model classes by subclassing Object
and adding properties to be managed.
You then instantiate and use your custom subclasses instead of using the Object
class directly.
class Dog: Object {
@objc dynamic var name: String = ""
@objc dynamic var adopted: Bool = false
let siblings = List<Dog>()
}
Supported property types
String
,NSString
Int
Int8
,Int16
,Int32
,Int64
Float
Double
Bool
Date
,NSDate
Data
,NSData
RealmOptional<Value>
for optional numeric propertiesObject
subclasses, to model many-to-one relationshipsList<Element>
, to model many-to-many relationships
String
, NSString
, Date
, NSDate
, Data
, NSData
and Object
subclass properties can be declared as optional.
Int
, Int8
, Int16
, Int32
, Int64
, Float
, Double
, Bool
, and List
properties cannot. To store an optional
number, use RealmOptional<Int>
, RealmOptional<Float>
, RealmOptional<Double>
, or RealmOptional<Bool>
instead,
which wraps an optional numeric value.
All property types except for List
and RealmOptional
must be declared as @objc dynamic var
. List
and
RealmOptional
properties must be declared as non-dynamic let
properties. Swift lazy
properties are not allowed.
Note that none of the restrictions listed above apply to properties that are configured to be ignored by Realm.
Querying
You can retrieve all objects of a given type from a Realm by calling the objects(_:)
instance method.
Relationships
See our Cocoa guide for more details.
-
Creates an unmanaged instance of a Realm object.
Call
add(_:)
on aRealm
instance to add an unmanaged object into that Realm.See
Realm().add(_:)
Declaration
Swift
public override required init()
-
Creates an unmanaged instance of a Realm object.
The
value
argument is used to populate the object. It can be a key-value coding compliant object, an array or dictionary returned from the methods inNSJSONSerialization
, or anArray
containing one element for each managed property. An exception will be thrown if any required properties are not present and those properties were not defined with default values.When passing in an
Array
as thevalue
argument, all properties must be present, valid and in the same order as the properties defined in the model.Call
add(_:)
on aRealm
instance to add an unmanaged object into that Realm.Declaration
Swift
public init(value: Any)
Parameters
value
The value used to populate the object.
-
The Realm which manages the object, or
nil
if the object is unmanaged.Declaration
Swift
public var realm: Realm? { get }
-
The object schema which lists the managed properties for the object.
Declaration
Swift
public var objectSchema: ObjectSchema { get }
-
Indicates if the object can no longer be accessed because it is now invalid.
An object can no longer be accessed if the object has been deleted from the Realm that manages it, or if
invalidate()
is called on that Realm.Declaration
Swift
public override final var isInvalidated: Bool { get }
-
A human-readable description of the object.
Declaration
Swift
open override var description: String { get }
-
Override this method to specify the name of a property to be used as the primary key.
Only properties of types
String
andInt
can be designated as the primary key. Primary key properties enforce uniqueness for each value whenever the property is set, which incurs minor overhead. Indexes are created automatically for primary key properties.Declaration
Swift
@objc open class func primaryKey() -> String?
Return Value
The name of the property designated as the primary key, or
nil
if the model has no primary key. -
Override this method to specify the names of properties to ignore. These properties will not be managed by the Realm that manages the object.
Declaration
Swift
@objc open class func ignoredProperties() -> [String]
Return Value
An array of property names to ignore.
-
Returns an array of property names for properties which should be indexed.
Only string, integer, boolean,
Date
, andNSDate
properties are supported.Declaration
Swift
@objc open class func indexedProperties() -> [String]
Return Value
An array of property names.
-
Returns or sets the value of the property with the given name.
Declaration
Swift
@objc open subscript(key: String) -> Any? { get set }
-
Registers a block to be called each time the object changes.
The block will be asynchronously called after each write transaction which deletes the object or modifies any of the managed properties of the object, including self-assignments that set a property to its existing value.
For write transactions performed on different threads or in different processes, the block will be called when the managing Realm is (auto)refreshed to a version including the changes, while for local write transactions it will be called at some point in the future after the write transaction is committed.
Notifications are delivered via the standard run loop, and so can’t be delivered while the run loop is blocked by other activity. When notifications can’t be delivered instantly, multiple notifications may be coalesced into a single notification.
Unlike with
List
andResults
, there is no “initial” callback made after you add a new notification block.Only objects which are managed by a Realm can be observed in this way. You must retain the returned token for as long as you want updates to be sent to the block. To stop receiving updates, call
invalidate()
on the token.It is safe to capture a strong reference to the observed object within the callback block. There is no retain cycle due to that the callback is retained by the returned token and not by the object itself.
Warning
This method cannot be called during a write transaction, or when the containing Realm is read-only.
Declaration
Swift
public func observe(_ block: @escaping (ObjectChange) -> Void) -> NotificationToken
Parameters
block
The block to call with information about changes to the object.
Return Value
A token which must be held for as long as you want updates to be delivered.
-
Returns whether two Realm objects are the same.
Objects are considered the same if and only if they are both managed by the same Realm and point to the same underlying object in the database.
Note
Equality comparison is implemented by
isEqual(_:)
. If the object type is defined with a primary key,isEqual(_:)
behaves identically to this method. If the object type is not defined with a primary key,isEqual(_:)
uses theNSObject
behavior of comparing object identity. This method can be used to compare two objects for database equality whether or not their object type defines a primary key.Declaration
Swift
public func isSameObject(as object: Object?) -> Bool
Parameters
object
The object to compare the receiver to.


0.4.24 / 2018-08-22
- Added MIK encoding (#196, by @Ivan-Kalatchev)
0.4.23 / 2018-05-07
- Fix deprecation warning in Node v10 due to the last usage of
new Buffer
(#185, by @felixbuenemann)
- Switched from NodeBuffer to Buffer in typings (#155 by @felixfbecker, #186 by @larssn)
0.4.22 / 2018-05-05
- Use older semver style for dependencies to be compatible with Node version 0.10 (#182, by @dougwilson)
- Fix tests to accomodate fixes in Node v10 (#182, by @dougwilson)
0.4.21 / 2018-04-06
- Fix encoding canonicalization (#156)
- Fix the paths in the "browser" field in package.json (#174 by @LMLB)
- Removed "contributors" section in package.json - see Git history instead.
0.4.20 / 2018-04-06
- Updated
new Buffer()
usages with recommended replacements as it's being deprecated in Node v10 (#176, #178 by @ChALkeR)
0.4.19 / 2017-09-09
- Fixed iso8859-1 codec regression in handling untranslatable characters (#162, caused by #147)
- Re-generated windows1255 codec, because it was updated in iconv project
- Fixed grammar in error message when iconv-lite is loaded with encoding other than utf8
0.4.18 / 2017-06-13
- Fixed CESU-8 regression in Node v8.
0.4.17 / 2017-04-22
- Updated typescript definition file to support Angular 2 AoT mode (#153 by @larssn)
0.4.16 / 2017-04-22
- Added support for React Native (#150)
- Changed iso8859-1 encoding to usine internal 'binary' encoding, as it's the same thing (#147 by @mscdex)
- Fixed typo in Readme (#138 by @jiangzhuo)
- Fixed build for Node v6.10+ by making correct version comparison
- Added a warning if iconv-lite is loaded not as utf-8 (see #142)
0.4.15 / 2016-11-21
- Fixed typescript type definition (#137)
0.4.14 / 2016-11-20
- Preparation for v1.0
- Added Node v6 and latest Node versions to Travis CI test rig
- Deprecated Node v0.8 support
- Typescript typings (@larssn)
- Fix encoding of Euro character in GB 18030 (inspired by @lygstate)
- Add ms prefix to dbcs windows encodings (@rokoroku)
0.4.13 / 2015-10-01
- Fix silly mistake in deprecation notice.
0.4.12 / 2015-09-26
- Node v4 support:
- Added CESU-8 decoding (#106)
- Added deprecation notice for
extendNodeEncodings
- Added Travis tests for Node v4 and io.js latest (#105 by @Mithgol)
0.4.11 / 2015-07-03
0.4.10 / 2015-05-26
- Changed UTF-16 endianness heuristic to take into account any ASCII chars, not
just spaces. This should minimize the importance of "default" endianness.
0.4.9 / 2015-05-24
- Streamlined BOM handling: strip BOM by default, add BOM when encoding if
addBOM: true. Added docs to Readme.
- UTF16 now uses UTF16-LE by default.
- Fixed minor issue with big5 encoding.
- Added io.js testing on Travis; updated node-iconv version to test against.
Now we just skip testing SBCS encodings that node-iconv doesn't support.
- (internal refactoring) Updated codec interface to use classes.
- Use strict mode in all files.
0.4.8 / 2015-04-14
- added alias UNICODE-1-1-UTF-7 for UTF-7 encoding (#94)
0.4.7 / 2015-02-05
- stop official support of Node.js v0.8. Should still work, but no guarantees.
reason: Packages needed for testing are hard to get on Travis CI.
- work in environment where Object.prototype is monkey patched with enumerable
props (#89).
0.4.6 / 2015-01-12
- fix rare aliases of single-byte encodings (thanks @mscdex)
- double the timeout for dbcs tests to make them less flaky on travis
0.4.5 / 2014-11-20
- fix windows-31j and x-sjis encoding support (@nleush)
- minor fix: undefined variable reference when internal error happens
0.4.4 / 2014-07-16
- added encodings UTF-7 (RFC2152) and UTF-7-IMAP (RFC3501 Section 5.1.3)
- fixed streaming base64 encoding
0.4.3 / 2014-06-14
- added encodings UTF-16BE and UTF-16 with BOM
0.4.2 / 2014-06-12
- don't throw exception if
extendNodeEncodings()
is called more than once
0.4.1 / 2014-06-11
0.4.0 / 2014-06-10
- code is rewritten from scratch
- all widespread encodings are supported
- streaming interface added
- browserify compatibility added
- (optional) extend core primitive encodings to make usage even simpler
- moved from vows to mocha as the testing framework


Lambda functions that can be used to express natural numbers
Natural numbers can be expressed a number of successions from zero, and zero can be expressed as the identity function. For example, give a function 'zero' and a function 'succ' we can create the numbers 1-5:
var one = succ(zero);
var two = succ(succ(zero));
var three = succ(succ(succ(zero)));
var four = succ(succ(succ(succ(zero))));
var five = succ(succ(succ(succ(succ(zero))))))
A succession is expressed as a pair, where the second item is the current predecessor; multiple successionis build up nested pairs.
This module depends on the foundation module.
NOTE
All functions accept a single parameter. Any functions that are documented as having multiple parameters will return a new function after the initial application, and so on until all arguments are supplied.
For example
applySelf(func)(arg);
- Source:
- numbers.js, line 1
Methods
-
<static> iszero(n) → {function}
-
Given a number 'n', returns True if that number is zero, otherwise returns False.
Since a number can be expressed as a pair, where the first item is second, which is the same as untruth or False, we can select the first value from the pair to determine if the number is zero. When first is applied to a number, untruth is returned. When first is applied to zero which is identity, it returns itself (which is the same as truth or True)
Lambda notation: λ.n(n first);
Parameters:
Name Type Description n
function A function representing a number.
- Source:
- numbers.js, line 93
Returns:
A function representing True or False.
- Type
- function
-
<static> pred(n) → {function}
-
Given a number a number 'n', represented as a pair, return zero if the number is zero, otherwise return the second item from the pair.
Keeping in mind that a number is a pair, which is a function waiting for a selector, consider a number in the form: [false, [false, zero]]. Applying iszero returns untruth or False, which is the selector function second. second is then passed to 'n' to retrieve the second value. module:numbers.zero, and the previously selected value (the predecessor) are then passed to the result of iszero, which returns the predecessor.
For example:
### Finding the predecessor of 2 var two = succ(succ(zero)); //=> [untruth, [untruth, zero] var selector = iszero(two); //=> untruth = second var predecessor = selector(zero)(two(second)) //=> [false, zero] = one ### Finding the predecessor of 0 var selector = iszero(zero) //=> first. iszero is defined as n(first); therefore, if n is zero, which is the identity function, first is returned. var predecessor = selector(zero)(zero(second)) //=> zero
Lambda notation: λ.n(((iszero n) zero) (n second))
Parameters:
Name Type Description n
function A function representing a number.
- Source:
- numbers.js, line 125
Returns:
A function representing a number which is the predecessor of 'n'
- Type
- function
-
<static> succ(n, s) → {function}
-
Given a number 'n', create a pair where second is the first item and 'n' is the second. In this way we can express numbers as such:
var one = succ(zero) //=> [second, zero]; var two = succ(one) //=> [second, [second, zero]]
Lambda notation: λn.λs((second) n)
Parameters:
Name Type Description n
function A function representing a number
s
function A selector function
- Source:
- numbers.js, line 69
Returns:
A function representing a number which is the successor of 'n'
- Type
- function
-
<static> zero(x) → {function}
-
Zero is the identity function. If numbers are pairs, and items are selected from pairs using first or second, zero represents the last item in a succession of pairs. See pred for more details.
Lambda notation: λx.x
Parameters:
Name Type Description x
function - Source:
- numbers.js, line 51
Returns:
x
- Type
- function


%%ErrorMessage%%. The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.
Go back to homepage.


Helper
There are several helper that you can use to help your life
Positioning
Sometimes you need to put something on the center of the screen. Just adding fix height css height: 500px;
or full height content height: 100%;
to the container content
Content Center
Content Left & Right
Sometimes you need to put something on the left or right side. We have the regular .pull-right, .pull-left and .clearfix helper that you can use.
Content Left
Content Right
Content Left
Content Right
Lists
The list have many kind of use.
List Flat
It's a list, but it's flat. You can use it to form anything, from a bar, a menu or a list
- List item
- List item
- List item
- List item
- List item
- List item
- List item
- List item
- List item
- List item
- List item
- List item
List Plain
It's a list, but it's plain. Because sometimes you don't need the bullet or numbering function.
- List item
- List item
- List item
- List item
- List item
- List item
- List item
- List item
- List item
- List item
- List item
- List item
Color
You want to inform user that something is important, we provide default color scheme for difference occotional.
Error
Warning
Success
Error
Warning
Success


I felt the need to post this report after finding so few reports already listed. As well as none of them really showing how beneficial this drug can be, assuming it's prescribed and used correctly.
About 4 months ago upon self diagnoses, I decided to see a psychiatrist regarding the treatment of ADD. My hopes were to return to Community College, this time with the will to succeed.  After a few interesting talks between the two of us, then between him and my mother(who insisting in having a part in this), he recommended atomoxetine (Strattera) as a treatment.
I was to start on 10 mg daily for 2 weeks, then increase to 25.
Upon starting treatment, the 2nd night I woke up around 3AM (going to sleep at 11) with a horrible feeling of just, not being well. Like there was something horribly wrong with me, but all logic told me I was fine. A strange feeling, that I've only had once with this drug. During the 3rd week, now on 25 MG daily, I felt slight suicidal intentions, just thinking of what it would be like to kill myself, which wasn't entirely normal for me. These passed nearly 7 days after, approaching my 4th week on the drug.
At first it kept me from sleeping, contrary to his advice of it helping my mild insomnia. After about a week this effect stopped.
I noticed a few of the typical SSRI/SNRI side effects overall: increased heart rate, decreased sex drive plus pain after orgasm, hesitation urnitating, slight constipation, and early awakening. Which actually regulated my schedule more, and I definitely wouldn't call it a negative side effect. All of these seemed to decrease as time went on, fortunately, except the early awakening deal; which was still a nice touch.
At school I felt much more focused, and for once actually felt like I wanted to complete my work. Instead of just drift off and daydream in class, not caring, I actually cared. As told by my doctor, it had slight off label effects as an anti-depressant. I believe I saw some of these in the initial increased suicidal intentions etc. and then in a slightly changed outlook on others. I no longer felt like I had to correct everyone when they did something wrong, or that I was being verbally attacked by people who used sarcasm.
Overall Strattera does it's job with few side effects, and is definitely a requirement for putting me through school. I love going off of it just for increased sexual functioning, as well as returning my heart rate to a much more normal level. (instead of raising it by 20BPM)
I can drink alcohol perfectly fine while on atomoxetine, and have combined my daily dose of Atomoxetine with between 90 and 190 MG of DXM. (only after doing large amounts of research with combining DXM + SNRI) If anything, the atomoxetine potentiates the effects of the DXM.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Sometimes it's easiest to download data and use tools to extract insights. Our platform is based on an open source model, but we love to hear how people use the data we've collected. Please let us know if you use the data from our site in any capacity by emailing cameronwkruse@gmail.com.