I am compelled to write this experience report in hope that others may avoid a bad or tragic situation by not making the same mistakes that I did. This is for those who may be wanting to try Salvia for the first time. Specifically for those that may be smoking Salvia in the form of an extract.
Before we get to the experience, let me provide a little background about myself. I consider myself to be a fairly experienced psychonaut, particularly in regard to psilocybin mushrooms. I enjoy and derive the most pleasure and learning from very deep experiences. I dose very heavy. Just under a quarter ounce (about 7 grams dried) is my base dosage. I am no stranger to somewhat edgy or scary trips. Because my approach and mindset is very stable, these trips are largely no scarier than say a good fun roller coaster. Anyway, just wanted to let you readers know, that while I am writing about my very first Salvia experience, it is coming from someone who is familar with other-worldly experiences.
After having done some online research I thought that I might try Salvia. So I purchased 3 grams of 20x extract from a reputable online source. It was the strongest extract that the source offered. I figured since I liked to trip hard that I should acquire the most potent available, after all, how strong can a legal botanical extract be? Right? This way of thinking was my first mistake. Truly, I was actually quite skeptical that there was much if any psychoactive properties at all. I had the extract in my possession for a full 2 weeks before I tried it, almost forgetting about it.
One evening in late November, most of my work around the house was done, I was settling down and remembered that I had the Salvia extract. Cool. The lights were low and I had some new music spinning on the CD player. My roomate was in his room, half asleep. I gathered about what was probably less than a tenth of a gram. Enough to half fill the bowl of a small/medium glass pipe. I figured I would sit down before taking the hit in case I felt woozy. I had no idea what to expect, it was my first time. I hit the pipe pretty hard for one hit. I remembered that the smoke was fairly easy on the lungs and the smell was reasonably pleasant. I cannot remember if I tried to take a second hit. I may have or I may have taken a small second hit. The reason I cannot remember is because almost immediately after that first hit, I was in another world, completely lost and out of touch.
I will describe what happens next from 1. flashes of memory 2. what I could feel internally and 3. an account from my roomate who was shaken from sleep by my activities. It may be best to first describe my physical journey. From the comfort of my living room I somehow left the house running. I was in my bare feet and shorts. It was 50 degrees and raining. I never go anywhere without wearing shoes. Running, running, running. I wound up in the lobby of a nearby hotel screaming for my life. I left the hotel running and headed toward a house. Thankfully that house was mine, I entered, partially not realizing it was mine at first. I then recognized my excited roommate and began to get back in touch with reality. While I am not exactly sure of the entire duration, my best guess is that it could have been as short as 15 minutes or possibly as long as 25.
I know that I was in the hotel lobby because I have a fair amount of memory of the turmoil that I created there. Those people must have thought that I was crazed lunatic. They were right, that is exactly what I was for that period of time. I remember screaming for an older gentleman there in the lobby to take my hand. 'Take my hand!', 'Take my hand!' I kept screaming. I felt that I wanted to see if the people there were real. The man almost took my hand in a gesture of seeing that I was distressed and that I may have needed help. I ran again. This was probably a good thing. I few more minutes in there and I'm sure the cops would have shown up. Total time there at the hotel, I'd say less than 2 minutes.
I believed that the world was ending. I thought that we, the people of this planet, all of our love and relationships, our friends and families, our jobs and material things, was an alien owned project that was being scrapped for whatever reason. If you remember the Steven King movie and novel called the Langoliers then you might have a good idea of what I thought was happening. In the book something is eating away at the fiber of time erasing everything that exists and leaving nothingness. I remember a feeling of bitterness in my heart towards these overseers that were now destroying their toy project.
I actually physically felt a force behind my head and back that was taking chunks from me and my spirit, kind of like the way a Pacman would go about consuming its prey. The force was so strong that it was apparent to me that there was no hope of escaping it. I remember feeling a profound sorrow, that I would never see my beloved girl Jenny again. And I was enraged that they dare consume her precious existance, but I was still running trying to stay alive for a few more moments. I recall not having great fear for the termination of my own life, but rather the sorrow of the ending of good times with those that I cared for. Perhaps there is some posivite self realization there in some of those feelings that resulted.
It was very fortunate that from the hotel I found my way back to my own house, though I still was not certain where I was yet or what was real and what was not. I suppose I could have headed across the highway by the motel which might have produced deadly results. The sight of my confused roommate, who had no idea why I would be running around outside at night with no shoes, was the beginning of getting back in touch. Shouting, I asked him to call Jenny on the phone. Still wondering what had happened I was seeking assurance from that person closest to me.
My roommate was relaying our conversation from her to me as he held the phone. I would not take the phone because I was afraid to touch anything yet for fear that it might just disappear. Jenny showed up within 20 minutes cell phone still in hand and talking to my roommate. Agitated for the next 20 minutes or so I paced and talked to them about the whole experience. We kept checking outside to see if the police had been called to the hotel. The hotel is in view of my house. Everything was cool thereafter.
Overall I did not find much in this experience redeeming. It certainly was interesting, intense, creepy and terrifying. While I cannot say that I am sorry that I tried it, its doubtful that I will try it again or at least in the same way again. I now judge the psychoactive compounds in Salvia to be the most potent in nature. At least based on my experience. I think that is a lot coming from someone who can typically consume a quarter ounce of mushrooms.
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.


Sign up
Market
Username:
Password:
market.com
Sign out
market.com
Sign out
market.com
Username:
Password:
Goods
tomatoes
rice
fish
cassava
yam
market.com


A handler that manages graphs.
Methods
Create a graph
createGraph(\triagens\ArangoDb\Graph $graph) : array
This will create a graph using the given graph object and return an array of
the created graph object's attributes.
This will throw if the graph cannot be created
Parameters
$graph
Exceptions
Returns
array
- an array of the created graph object's attributes.
Drop a graph and remove all its vertices and edges, also drops vertex and edge collections
dropGraph(string $graph) : bool
Parameters
Exceptions
Returns
bool
- always true, will throw if there is an error
Get connected edges of a given vertex
getConnectedEdges(mixed $graphName, mixed $vertexId, bool|array $options) : \triagens\ArangoDb\cursor
This will throw if the list cannot be fetched from the server
Parameters
$options
bool
array
- optional, prior to v1.0.0 this was a boolean value for sanitize, since v1.0.0 it's an array of
options.
Options are :
'batchSize' - the batch size of the returned cursor
'limit' - limit the result size by a give number
'count' - return the total number of results Defaults to false.
'filter' - a optional filter
Filter options are :
'direction' - Filter for inbound (value "in") or outbound (value "out") neighbors. Default value is
"any".
'labels' - filter by an array of edge labels (empty array means no restriction).
'properties' - filter neighbors by an array of edge properties
Properties options are :
'key' - Filter the result vertices by a key value pair.
'value' - The value of the key.
'compare' - A comparison operator. (==, >, <, >=, <= )
'_sanitize' - True to remove _id and _rev attributes from result documents. Defaults to false.
'sanitize' - Deprecated, please use '_sanitize'.
'_hiddenAttributes' - Set an array of hidden attributes for created documents.
'hiddenAttributes' - Deprecated, please use '_hiddenAttributes'.
This is actually the same as setting hidden attributes using setHiddenAttributes() on a document.
The difference is, that if you're returning a resultset of documents, the getAll() is already called
and the hidden attributes would not be applied to the attributes.
Exceptions
Returns
Get a single edge from a graph
getEdge(mixed $graphName, mixed $edgeId, array $options) : \triagens\ArangoDb\Document
This will throw if the edge cannot be fetched from the server
Parameters
$graphName
mixed
- collection id as a string or number
$options
array
- optional, array of options
Options are :
'_includeInternals' - true to include the internal attributes. Defaults to false
'includeInternals' - Deprecated, please use '_includeInternals'.
'_ignoreHiddenAttributes' - true to show hidden attributes. Defaults to false
'ignoreHiddenAttributes' - Deprecated, please use '_ignoreHiddenAttributes'.
Exceptions
Returns
Get a graph
getGraph(String $graph, array $options) : \triagens\ArangoDb\Graph
This will get a graph.
This will throw if the graph cannot be retrieved.
Parameters
$options
array
- Options to pass to the method
Exceptions
Returns
Get neighboring vertices of a given vertex
getNeighborVertices(mixed $graphName, mixed $vertexId, bool|array $options) : \triagens\ArangoDb\cursor
This will throw if the list cannot be fetched from the server
Parameters
$options
bool
array
- optional, prior to v1.0.0 this was a boolean value for sanitize, since v1.0.0 it's an array of
options.
Options are :
'batchSize' - the batch size of the returned cursor
'limit' - limit the result size by a give number
'count' - return the total number of results Defaults to false.
'filter' - a optional filter
Filter options are :
'direction' - Filter for inbound (value "in") or outbound (value "out") neighbors. Default value is
"any".
'labels' - filter by an array of edge labels (empty array means no restriction).
'properties' - filter neighbors by an array of edge properties
Properties options are :
'key' - Filter the result vertices by a key value pair.
'value' - The value of the key.
'compare' - A comparison operator. (==, >, <, >=, <= )
'_sanitize' - True to remove _id and _rev attributes from result documents. Defaults to false.
'sanitize' - Deprecated, please use '_sanitize'.
'_hiddenAttributes' - Set an array of hidden attributes for created documents.
'hiddenAttributes' - Deprecated, please use '_hiddenAttributes'.
This is actually the same as setting hidden attributes using setHiddenAttributes() on a document.
The difference is, that if you're returning a resultset of documents, the getAll() is already called
and the hidden attributes would not be applied to the attributes.
Exceptions
Returns
Get a single vertex from a graph
getVertex(string $graphName, mixed $vertexId, array $options) : \triagens\ArangoDb\Document
This will throw if the vertex cannot be fetched from the server
Parameters
$graphName
string
- the graph name as a string
$options
array
- optional, an array of options
Options are :
'_includeInternals' - true to include the internal attributes. Defaults to false
'includeInternals' - Deprecated, please use '_includeInternals'.
'_ignoreHiddenAttributes' - true to show hidden attributes. Defaults to false
'ignoreHiddenAttributes' - Deprecated, please use '_ignoreHiddenAttributes'.
Exceptions
Returns
Get a graph's properties
properties(string $graph) : bool
Parameters
Exceptions
Returns
bool
- Returns an array of attributes. Will throw if there is an error
Remove a edge from a graph, identified by the graph name and edge id
removeEdge(mixed $graphName, mixed $edgeId, mixed $revision, mixed $options) : bool
Parameters
$graphName
mixed
- graph name as string or number
$edgeId
mixed
- edge id as string or number
$revision
mixed
- optional revision of the edge to be deleted
$options
mixed
- optional, array of options (see below) or the boolean value for $policy (for compatibility prior
to version 1.1 of this method)
Options are :
'policy' - update policy to be used in case of conflict ('error', 'last' or NULL [use default])
'waitForSync' - can be used to force synchronisation of the document removal operation to disk even
in case that the waitForSync flag had been disabled for the entire collection
Exceptions
Returns
bool
- always true, will throw if there is an error
Remove a vertex from a graph, identified by the graph name and vertex id
removeVertex(mixed $graphName, mixed $vertexId, mixed $revision, mixed $options) : bool
Parameters
$vertexId
mixed
- the vertex id as string or number
$revision
mixed
- optional, the revision of the vertex to be deleted
$options
mixed
- optional, an array of options (see below) or the boolean value for $policy (for compatibility
prior to version 1.1 of this method)
Options are :
'policy' - update policy to be used in case of conflict ('error', 'last' or NULL [use default])
'waitForSync' - can be used to force synchronisation of the document removal operation to disk even
in case that the waitForSync flag had been disabled for the entire collection
Exceptions
Returns
bool
- always true, will throw if there is an error
Replace an existing edge in a graph, identified graph name and edge id
replaceEdge(mixed $graphName, mixed $edgeId, mixed $label, \triagens\ArangoDb\Edge $document, mixed $options) : bool
This will replace the edge on the server
This will throw if the edge cannot be Replaced
If policy is set to error (locally or globally through the ConnectionOptions)
and the passed document has a _rev value set, the database will check
that the revision of the to-be-replaced edge is the same as the one given.
Parameters
$graphName
mixed
- graph name as string or number
$edgeId
mixed
- edge id as string or number
$options
mixed
- optional, array of options (see below) or the boolean value for $policy (for compatibility prior
to version 1.1 of this method)
Options are :
'policy' - update policy to be used in case of conflict ('error', 'last' or NULL [use default])
'waitForSync' - can be used to force synchronisation of the document replacement operation to disk
even in case that the waitForSync flag had been disabled for the entire collection
Exceptions
Returns
bool
- always true, will throw if there is an error
Replace an existing vertex in a graph, identified graph name and vertex id
replaceVertex(string $graphName, mixed $vertexId, \triagens\ArangoDb\Document $document, mixed $options) : bool
This will update the vertex on the server
This will throw if the vertex cannot be Replaced
If policy is set to error (locally or globally through the ConnectionOptions)
and the passed document has a _rev value set, the database will check
that the revision of the to-be-replaced vertex is the same as the one given.
Parameters
$vertexId
mixed
- the vertex id as string or number
$options
mixed
- optional, an array of options (see below) or the boolean value for $policy (for compatibility
prior to version 1.1 of this method)
Options are :]
'revision' - revision for conditional updates ('some-revision-id' [use the passed in revision id],
false or true [use document's revision])
'policy' - update policy to be used in case of conflict ('error', 'last' or NULL [use default])
'waitForSync' - can be used to force synchronisation of the document replacement operation to disk
even in case that the waitForSync flag had been disabled for the entire collection
Exceptions
Returns
bool
- always true, will throw if there is an error
save an edge to a graph
saveEdge(mixed $graphName, mixed $from, mixed $to, mixed $label, mixed $document) : mixed
This will save the edge to the graph and return the edges-document's id
This will throw if the edge cannot be saved
Parameters
$label
mixed
- (optional) a label for the edge
$document
mixed
- the edge-document to be added, can be passed as an edge object or an array
Exceptions
Returns
mixed
- id of edge created
save a vertex to a graph
saveVertex(mixed $graphName, mixed $document) : mixed
This will add the vertex-document to the graph and return the vertex id
This will throw if the vertex cannot be saved
Parameters
$document
mixed
- the vertex to be added, can be passed as a vertex object or an array
Exceptions
Returns
mixed
- id of vertex created
Update an existing edge in a graph, identified by graph name and edge id
updateEdge(string $graphName, mixed $edgeId, mixed $label, \triagens\ArangoDb\Edge $document, mixed $options) : bool
This will update the edge on the server
This will throw if the edge cannot be updated
If policy is set to error (locally or globally through the ConnectionOptions)
and the passed edge-document has a _rev value set, the database will check
that the revision of the to-be-replaced document is the same as the one given.
Parameters
$edgeId
mixed
- edge id as string or number
$options
mixed
- optional, array of options (see below)
Options are :
'policy' - update policy to be used in case of conflict ('error', 'last' or NULL [use default])
'keepNull' - can be used to instruct ArangoDB to delete existing attributes instead setting their
values to null. Defaults to true (keep attributes when set to null)
'waitForSync' - can be used to force synchronisation of the document update operation to disk even
in case that the waitForSync flag had been disabled for the entire collection
Exceptions
Returns
bool
- always true, will throw if there is an error
Update an existing vertex in a graph, identified by graph name and vertex id
updateVertex(string $graphName, mixed $vertexId, \triagens\ArangoDb\Document $document, mixed $options) : bool
This will update the vertex on the server
This will throw if the vertex cannot be updated
If policy is set to error (locally or globally through the ConnectionOptions)
and the passed vertex-document has a _rev value set, the database will check
that the revision of the to-be-replaced document is the same as the one given.
Parameters
$vertexId
mixed
- the vertex id as string or number
$options
mixed
- optional, an array of options (see below)
Options are :
'policy' - update policy to be used in case of conflict ('error', 'last' or NULL [use default])
'keepNull' - can be used to instruct ArangoDB to delete existing attributes instead setting their
values to null. Defaults to true (keep attributes when set to null)
'waitForSync' - can be used to force synchronisation of the document update operation to disk even
in case that the waitForSync flag had been disabled for the entire collection
Exceptions
Returns
bool
- always true, will throw if there is an error
Constants
documents array index
ENTRY_GRAPH
example parameter
KEY_FROM
direction parameter
OPTION_EDGES
direction parameter
OPTION_KEY
conditional update of edges or vertices
OPTION_REVISION
vertex parameter
OPTION_VERTICES


public class Route
extends java.lang.Object
For the license, view the file titled LICENSE at the root of the project
| Modifier and Type | Field and Description |
|---|---|
UpdateBuses |
asyncBusUpdater
The asynchronous method that updates the buses for this route.
|
Bus[] |
buses
The array of buses that belong to this route.
|
int |
color
The color of the parentRoute.
|
com.google.android.gms.maps.model.LatLng[] |
polyLineCoordinates
The array of LatLng coordinates that will be used to create the polyline (if enabled).
|
java.lang.String |
routeName
The name of the parentRoute.
|
Stop[] |
stops
The array of stops for this parentRoute.
|
UpdateThread |
updateThread
The network thread that updates this given route.
|
| Constructor and Description |
|---|
Route(java.lang.String routeName)
Constructor for the parentRoute.
|
Route(java.lang.String routeName,
int color)
Constructor for the parentRoute.
|
| Modifier and Type | Method and Description |
|---|---|
void |
createPolyline(com.google.android.gms.maps.GoogleMap map)
Creates the polyline that correspond to this route's path by utilizing the polyLineCoordinates.
|
static Route[] |
disableRoute(java.lang.String routeName,
Route[] oldRoutes)
Disables a parentRoute by name, and removes all elements of that parentRoute from the map
(except stops).
|
static Route[] |
enableRoutes(java.lang.String routeName,
Route[] oldRoutes)
Enabled a parentRoute by parentRoute name,
and returns a new array of enabled childRoutes including the previously enabled childRoutes.
|
static Route[] |
generateRoutes(org.json.JSONObject masterSchedule)
Dynamically generates the childRoutes that are used by parsing the master schedule.
|
com.google.android.gms.maps.model.Polyline |
getPolyline()
Returns the polyline that corresponds to the parentRoute.
|
com.google.android.gms.maps.model.LatLng[] |
loadPolyLineCoordinates(RouteMatch routeMatch)
Declares and initializes an array of LatLng coordinates to be used by the childRoutes polyline.
|
Stop[] |
loadStops(RouteMatch routeMatch)
Loads the stops from the provided url.
|
public java.lang.String routeName
public int color
This is an int instead of a Color object because for whatever reason android stores its colors as ints.
public Stop[] stops
public Bus[] buses
public UpdateBuses asyncBusUpdater
public com.google.android.gms.maps.model.LatLng[] polyLineCoordinates
public UpdateThread updateThread
public Route(java.lang.String routeName) throws java.lang.Exception
routeName
- The name of the parentRoute. Be sure this does NOT
contain any whitespace characters!java.lang.Exception
- Thrown if the parentRoute name contains white space characters.public Route(java.lang.String routeName, int color) throws java.lang.Exception
routeName
- The name of the parentRoute. e sure this does NOT
contain any whitespace characters!color
- The parentRoute's color. This is optional,
and of the color is non-existent simply use the
Route(String routeName)
constructor.java.lang.Exception
- Thrown if the parentRoute name contains white space characters.public static Route[] generateRoutes(org.json.JSONObject masterSchedule)
masterSchedule
- The master schedule JSONObject from the RouteMatch server.public static Route[] enableRoutes(java.lang.String routeName, Route[] oldRoutes)
routeName
- The new parentRoute to enable (by parentRoute name).oldRoutes
- The array of old childRoutes that were previously enabled.
If there were no previously enabled childRoutes then this must be an array of size 0.public static Route[] disableRoute(java.lang.String routeName, Route[] oldRoutes)
routeName
- The parentRoute the be disabled by name.oldRoutes
- The array of old, though currently enabled childRoutes.public Stop[] loadStops(RouteMatch routeMatch)
routeMatch
- The parentRoute match instance (for pulling from the RouteMatch server).public com.google.android.gms.maps.model.LatLng[] loadPolyLineCoordinates(RouteMatch routeMatch)
routeMatch
- The RouteMatch object.public com.google.android.gms.maps.model.Polyline getPolyline()
public void createPolyline(com.google.android.gms.maps.GoogleMap map)
map
- The map to add the polyline to.


Create your account. It's free and only takes a minute.
I accept the Terms of Use & Privacy Policy
Already have an account? Sign in


| 程序包 | 说明 |
|---|---|
| org.springframework.context.event |
Support classes for application events, like standard context events.
|
| org.springframework.messaging.simp.broker |
Provides a "simple" message broker implementation along with an abstract base
class and other supporting types such as a registry for subscriptions.
|
| org.springframework.messaging.simp.stomp |
Generic support for simple messaging protocols (like STOMP).
|
| org.springframework.web.socket.messaging |
WebSocket integration for Spring's messaging module.
|
| 限定符和类型 | 类和说明 |
|---|---|
class |
EventPublicationInterceptor
Interceptor that publishes an
ApplicationEvent to all ApplicationListeners
registered with an ApplicationEventPublisher after each
successful method invocation. |
| 限定符和类型 | 类和说明 |
|---|---|
class |
AbstractBrokerMessageHandler
Abstract base class for a
MessageHandler that broker messages to
registered subscribers. |
class |
SimpleBrokerMessageHandler
A "simple" message broker that recognizes the message types defined in
SimpMessageType , keeps track of subscriptions with the help of a
SubscriptionRegistry and sends messages to subscribers. |
| 限定符和类型 | 类和说明 |
|---|---|
class |
StompBrokerRelayMessageHandler
A
MessageHandler that handles messages by
forwarding them to a STOMP broker. |
| 限定符和类型 | 类和说明 |
|---|---|
class |
StompSubProtocolHandler
A
SubProtocolHandler for STOMP that supports versions 1.0, 1.1, and 1.2
of the STOMP specification. |


Next: Return values in the ``Syntax'' Section, Previous: Naming Conventions for Rest Parameters, Up: Interpreting Dictionary Entries
In some cases it is useful to refer to all arguments equally as a single aggregation using a rest parameter while at the same time requiring at least one argument. A variety of imperative and declarative means are available in code for expressing such a restriction, however they generally do not manifest themselves in a lambda list. For descriptive purposes within this specification,
F
&rest arguments^+
means the same as
F
&rest arguments
but introduces the additional requirement that there be at least one argument.


references(5f - FORTRAN:SUPPLEMENT] www references for Fortran
Syntax
Description
browser URL
Some popular WWW reference sites for Fortran
o Fortran 2018 Standard https://j3-fortran.org/doc/year/18/18-007r1.pdf o Modern Fortran http://cyber.dabamos.de/programming/modernfortran
o J3 https://j3-fortran.org
o GNU gcc http://gcc.gnu.org
o netlib http://www.netlib.org o Fortran Standard Library project https://github.com/fortran-lang/stdlib/issues/229
o Rosetta Code https://rosettacode.org o Fortran Package Manager
o fpm https://github.com/fortran-lang/fpm o repository https://github.com/fortran-lang/fpm-registry o package listing https://fortran-lang.org/packages.
o Fortran Discourse https://fortran-lang.discourse.group o Google Fortran newsgroup https://groups.google.com/forum/#!forum/comp.lang.fortran o Fortran Wiki http://fortranwiki.org
| Nemo Release 3.1 | references (5) | July 22, 2023 |


Ilya Loshkarev<EMAIL_ADDRESS>SFEDU 2017
| Queue | concurrent |
unordered |
|---|---|---|
serial |
ordered | |
| Task | async |
non blocking |
sync |
blocking |
// Get some queue to put our task into
dispatch_async( dispatch_get_global_queue(
Int(QOS_CLASS_USER_INITIATED.rawValue), 0) )
{
/* do some heavy work */
dispatch_async(dispatch_get_main_queue()) {
/* present results to the user */
}
}
Depricated since iOS 10.0 👌
// Get some queue to put our task into
DispatchQueue.global(qos: .userInitiated).async {
/* do some task */
DispatchQueue.main.async {
/* present results to the user */
}
}
Any UI operation should be performed on the main queue
.userInteractive // highest priority
.userInitiated
.utility // default
.background // lowest priority
System prioritizes and schedules queues
according to their QoS attribute
let backgroundQueue = DispatchQueue(label: "com.app.queue",
qos: .background,
attributes: .concurrent)
backgroundQueue.async {
print("Dispatched to background queue")
}
Created queue can be accessed by label
let group = DispatchGroup()
DispatchQueue.global().async(group: group){
/* do stuff */
}
group.wait() // wait for every task in group to complete
group.notify(queue: DispatchQueue.main) {
/* do this after every task in the group is completed */
}
Allow to perform barrier based synchronisation
let semaphore = DispatchSemaphore(value: 10)
semaphore.wait()
/* access some shared data */
semaphore.signal()
Implementation of a traditional counting semaphore
// Performs the receiver’s non-concurrent task
func main()
// The block to execute after the operation’s main task is completed
var completionBlock: (() -> Void)?
An abstract class you use to encapsulate the code and data associated with a single task
let q = OperationQueue()
q.qualityOfService = .utility
q.maxConcurrentOperationCount = 10
q.isSuspended = true
let op = BlockOperation { /* do stuff */ }
op.completionHandler = { /* do other stuff */}
q.addOperation(op: op)
q.isSuspended = false
q.waitUntilAllOperationsAreFinished()
let op = BlockOperation { /* do stuff */ }
op.queuePriority = .high
let dependentOp = BlockOperation { /* do other stuff */ }
dependantOP.addDependency(op) // requires 'op' to be completed
q.addOperation(op)
Operation Queue schedules operations according to their dependencies and priority
var isCancelled: Bool
var isReady: Bool
var isExecuting: Bool
var isFinished: Bool
var isConcurrent: Bool
class FileringOperation: Operation {
var filter: CIFilter!
weak var imageView: UIImageView?
var result: UIImage?
func main() {
if isCanceled { return }
if let source = imageView?.image {
result = filter.apply(to: source)
}
}
}
Key-value coding is a mechanism that allows objects to provide indirect access to their properties
// Returns the value for the property identified by a given key
func value(forKey key: String) -> Any?
// Sets the property of the receiver specified by a given key to a given value
func setValue(_ value: Any?, forKey key: String)
class KVCCompliant: NSObject {
dynamic var name: String = ""
}
let kvc: KVCCompliant
kvc.setValue("I'm a KVC Object", forKey: "name")
There is no explicit KVC protocol, but any subclass of NSObject
is KVC compliant
Key-value observing is a mechanism that allows objects to be notified of changes to specified properties of other objects
func observeValue(forKeyPath keyPath: String?, of object: Any?,
change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?)
func addObserver(_ observer: NSObject, forKeyPath keyPath: String,
options: NSKeyValueObservingOptions = [], context: UnsafeMutableRawPointer?)
func removeObserver(_ observer: NSObject, forKeyPath keyPath: String)
class MyObserver: NSObject {
var myContext = 88888888
override init() {
super.init()
objectToObserve.addObserver(self,
forKeyPath: #keyPath(Observed.propertyName),
options: .new, context: &myContext)
}
deinit {
objectToObserve.removeObserver(self,
forKeyPath: #keyPath(Observed.propertyName),
context: &myContext)
}
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?,
change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if context == &myContext {
if let newValue = change?[.newKey] {
print("Value changed: \(newValue)")
}
} else {
super.observeValue(forKeyPath: keyPath, of: object,
change: change, context: context)
}
}
class Note {
var content: String {
willSet {
print("content will be set to \(content)")
}
didSet {
print("content has been set to \(content)")
}
}
}
let defaultCenter = NotificationCenter.default
name: String // unique name
object: AnyObject? // sender
userInfo: [:]? // additional data
An object distributed through Notification Center
defaultCenter.post(name: "MyNotification", object: self)
defaultCenter.post(name: "MyNotificationWithPayload",
object: self,
userInfo: ["payload" : myPayload])
Any notification should have a unique name within an app
It is a good idea to store notification names in an enumeration
defaultCenter.addObserver(self,
selector: #selector(myNotificationHandler),
name: "MyNotification", object: sender)
Calls self.myNotificationHandler
whenever MyNotification
is posted
defaultCenter.removeObserver(self,
name: "MyNotification", object: sender)
Observers should be removed manually on deinit
defaultCenter.addObserver(forName: "MyNotification",
object: sender, queue: nil) {
[weak self] notification in
/* handle notification */
}
Performs closure in specified queue
Strong references to self
in closures
can create reference cycles
DispatchQueue.main.async {
defaultCenter.post(name: "MyNotification", object: nil,
userInfo: ["data":data])
}
Notification centers deliver notifications on the thread
in which the notification was posted
defaultCenter.addObserver(self,
selector: #selector(managedObjectContextObjectsDidChange),
name: NSManagedObjectContextObjectsDidChangeNotification,
object: context)
Managed Object Context has three types of notifications
// NSManagedObjectContext ObjectsDidChange Notification
// NSManagedObjectContext WillSave Notification
// NSManagedObjectContext DidSave Notification
func managedObjectContextObjectsDidChange(notification: NSNotification) {
// userInfo holds information about the changes
guard let userInfo = notification.userInfo else { return }
if let inserts =
userInfo[NSInsertedObjectsKey] as? Set<NSManagedObject> { }
if let updates =
userInfo[NSUpdatedObjectsKey] as? Set<NSManagedObject> { }
if let deletes =
userInfo[NSDeletedObjectsKey] as? Set<NSManagedObject> { }
}


gaesd manages and sends traces and spans to Stack Driver using a simple, intuitive and pythonic API. Developed by Francis Horsman at Joivy


interface BotAnswerInterceptor
(source)
Change or update answer before sending to the user Need to be registered using ai.tock.bot.engine.BotRepository.registerBotAnswerInterceptor.
handle |
Returns the replacement action. open fun handle(action: Action, bus: BotBus): Action |


To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video


--- layout: default title: Docs ---
On Hadoop CLI installation
On-Hadoop-CLI installation is for demo use, or for those who want to host their own web site to provide Kylin service:
On Hadoop CLI installation Wiki
Off Hadoop CLI Installation
Off-Hadoop-CLI installation is usually for devlopment use, when developpers want to run kylin test cases or applications at their development machine:
Off Hadoop CLI Installation Wiki


Tom Brady Says He’s Never Really Liked The Cowboys
by Matt HladikThe Dallas Cowboys are one of the teams you either love or you hate. It sure sounds like Tom Brady doesn’t love them.
Brady and the Patriots are set to host the Cowboys in a critical Week 12 matchup this Sunday afternoon. Obviously, Brady will have his killer instinct with him for this game like he does pretty much every other time he takes the field.
Still, there might be some added incentive to beat Dallas, considering Brady admitted he’s never been a big fan. You see, Tom grew up in California as a die-hard 49ers fan.
He was in attendance for “The Catch” when the Niners beat the Cowboys in the NFC Championship Game, and Brady told reporters today he’s always had a bit of a distaste for Dallas.
Because they play in different conferences, the Cowboys and Patriots have met only 12 times ever. Dallas won the first seven matchups, with New England taking the next five.
Brady is 4-0 against the ‘Boys, winning in 2003, 2007, 2011 and 2015. This might be his last time facing them, unless they meet in a Super Bowl or Brady is still playing in 2023.
The latest Cowboys-Patriots tilt will kick off at 4:25 p.m. ET Sunday on FOX.


Hey there, we are team 3 from the DSCI550 Machine Learning at Scale, here are our visulizations on the fradulent email data we collected and analyzed (Please Scroll down for more!)


Administrator Dashboard
Users
Email Addresses
Today's Detection
All Time Detection
Monthly Overview of Detected Phishing Emails


Own goal keeps Slovenia's faint hopes alive
Slovenia kept alive the faintest of hopes of qualifying for Euro 2020, at least for another couple of hours, when an own goal by Igors Tarasovs gave them a 1-0 win over bottom-of-the-table Latvia in Group G on Saturday.
LJUBLJANA: Slovenia kept alive the faintest of hopes of qualifying for Euro 2020, at least for another couple of hours, when an own goal by Igors Tarasovs gave them a 1-0 win over bottom-of-the-table Latvia in Group G on Saturday.
The unfortunate Tarasovs turned the ball into the net at the far post in the 53rd minute after Josip Ilicic beat his marker and fired in a low cross from the right.
Third-placed Slovenia moved on to 14 points from nine games, two behind Austria who were at home to North Macedonia later on Saturday needing a point to join Poland as the group's two qualifiers.
Even if Austria lose, they would still need another defeat in Latvia on Tuesday to miss out on qualification - unlikely as Latvia have lost all nine games so far - while Slovenia themselves would also have to beat leaders Poland away.
Slovenia, whose only appearance at the finals was in 2000, created enough chances to have won more comfortably with Jasmin Kurtic curling a dipping shot onto the crossbar in the first half.
They nearly paid late in the game when their goalkeeper Jan Oblak was forced to make a difficult one-handed save from Vladislavs Fjodorovs and deny Latvia their first point in the group.
(Writing by Brian Homewood; Editing by Toby Davis)


Neural Network
For Web
Examples
Image Classification
Person/Object Detection
Semantic Segmentation
Skeleton Detection
Face Recognition
Facial Landmark Detection
Style Transfer
Super Resolution
Emotion Analysis
Speech Commands
Speech Recognition
Models
Backend
Dual
Polyfill
WASM
WebGL
WebNN
FAST_SINGLE_ANSWER
SUSTAINED_SPEED
LOW_POWER
Note
Dual backends selected, following ops were offloaded to
from
:
Style Transfer
Image
Live Camera
0%
Loading model ...
Prediction Failed
Please check error log for more details
Pick Image
Subgraphs Summary


--- title: "TensorBoard Visualization" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{TensorBoard Visualization} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} type: docs repo: https://github.com/rstudio/tfestimators menu: main: name: "TensorBoard" identifier: "tfestimators-tensorboard-visualizations" parent: "tfestimators-using-tfestimators" weight: 50 ---
TensorBoard is a visualization tool included with TensorFlow that enables you to visualize your TensorFlow graph, plot quantitative metrics about the execution of your graph, and show additional data like images that pass through it.
Models built using tfestimators automatically contain most of the necessary information to visualize the TensorFlow graph, variables, etc., for you so you can easily launch the TensorBoard without additional manual specifications.
To start the TensorBoard, you trained a model in a similar fashion as follows:
and then you can call
tensorboard(log_dir = "/tmp/test", launch_browser = TRUE)
with log_dir
being the directory you used to save the model checkpoints, to launch the TensorBoard in browser.
For example, here’s a TensorBoard display for a model’s training loss:
Here’s another TensorBoard display for this model’s TensorFlow graph that demonstrates the architecture of the model:
You can also click to see each subgraph’s details:


| CONTENTS | PREV | NEXT |
Thread
Safety A
particular instance of an ImageReader
or
ImageWriter
is not required to support re-entrant
(simultaneous) calls to its methods (with the exception of the
abort
method that requests current read or writes to
halt). However, it must be possible for multiple instances of the
same plug-in class to operate simultaneously. For the sake of
brevity, we will only discuss reader plug-ins below.
Supporting full re-entrancy would require that the reader bundle all of its state information (e.g., the current input source) into a separate state object, which would allow methods in progress to continue to work with the settings that were in effect at the time they began, while allowing a separate thread to modify the state to be used by the next operation.
Rather than forcing
each ImageReader
to keep track of its state in this
way, it is simpler to require the application to instantiate
multiple instances of the same ImageReader
class if it
wishes to perform multithreaded processing. This means that the
state of an ImageReader
must be maintained using
non-static instance variables only, which should not be a burden
for plug-in developers.