MathJax performs much of its activity asynchronously, meaning that the calls that you make to initiate these actions will return before the actions are completed, and your code will continue to run even though the actions have not been finished (and may not even be started yet). Actions such as loading files, loading web-based fonts, and creating stylesheets all happen asynchronously within the browser, and since JavaScript has no method of halting a program while waiting for an action to complete, synchronizing your code with these types of actions is made much more difficult. MathJax used three mechanisms to overcome this language shortcoming: callbacks, queues, and signals.
Callbacks are functions that are called when an action is completed, so that your code can continue where it left off when the action was initiated. Rather than have a single routine that initiates an action, waits for it to complete, and then goes on, you break the function into two parts: a first part that sets up and initiates the action, and a second that runs after the action is finished. Callbacks are similar to event handlers that you attach to DOM elements, and are called when a certain action occurs. See the Callback Object reference page for details of how to specify a callback.
Queues are MathJax’s means of synchronizing actions that must be performed sequentially, even when they involve asynchronous events like loading files or dynamically creating stylesheets. The actions that you put in the queue are Callback objects that will be performed in sequence, with MathJax handling the linking of one action to the next. MathJax maintains a master queue that you can use to synchronize with MathJax, but you can also create your own private queues for actions that need to be synchronized with each other, but not to MathJax as a whole. See the Queue Object reference page for more details.
Signals are another means of synchronizing your own code with MathJax. Many of the important actions that MathJax takes (like typesetting new math on the page, or loading an external component) are “announced” by posting a message to a special object called a Signal. Your code can register an interest in receiving one or more of these signals by providing a callback to be called when the signal is posted. When the signal arrives, MathJax will call your code. This works somewhat like an event handler, except that many different types of events can go through the same signal, and the signals have a “memory”, meaning that if you register an interest in a particular type of signal and that signal has already occurred, you will be told about the past occurrences as well as any future ones. See the Signal Object reference page for more details. See also the test/sample-signals.html file in the MathJax test directory for a working example of using signals.
Each of these is explained in more detail in the links below:


Material details
Name
Unit Cost
This field must be a number
Unit
{{u.name}}
Type
{{mt.name}}
Submit
Delete
Cancel


CD Projekt's Revenue Jump Aided By Sales Of Witcher 3 On Switch
Company "encouraged" by the "positive reception"
by Damien McFerranPolish studio CD Projekt has just published its third-quarter earnings report for 2019, and has cited the release of Witcher 3 on Switch as one of the key reasons for a 38% revenue jump year-on-year.
In the last quarter, CD Projekt Capital Group posted 92.9 million PLN in sales revenues, scoring a net profit of 14.9 million PLN. Piotr Nielubowicz, Vice President and CFO of CD Projekt, attributed this (in part) to the success of the Nintendo Switch port:
Our third-quarter revenues were over 38% higher than during the corresponding period in 2018. This is due, among others, to increased sales of The Witcher 3, first shipments of the game’s Nintendo Switch edition and an increase in revenues posted by GOG.com.
The same period saw GWENT come to iOS devices, which also contributed to the improved financial results. Nielubowicz added:
We are greatly encouraged by positive reception of both releases on the part of gamers, particularly taking into account the fact that we hadn’t previously released any products for either hardware platform. It is worth noting that throughout the first three weeks following the launch of GWENT on iOS, 68% of revenues associated with this game came from iOS devices.
Were you one of the many who purchased Witcher 3 on Switch? Do you think this robust commercial performance will encourage the company to bring more games to Switch? Let us know with a comment.
[via cdprojekt.com]


For N points, in M dimensions, get squared Mahalanobis distances to center.
mahalDistC( m, scale = TRUE, use = "complete.obs", center = c("mean", "median"), ... )
| m | A data.frame or matrix. Observations in rows. |
|---|---|
| scale | If TRUE, scale variables before getting mahalanobis distances. |
| use | Observations to use in computing covariance matrix. Gets
passed to |
| center | Type of univariate center for each variable in |
| ... | additional arguments passed to
|
A list with additional class "mahalDist" containing elements:
D2: A vector of squared Mahalanobis distances for
observations (rows) in m
. Incomplete observations return
NA.
vars: A character vector with the column names from
m
.
dim: The number of columns of m
.
For each of N points in M dimensions, get squared Mahalanobis distances to distribution centroid. This is useful for checking for outliers in a multivariate distribution. The squared Mahalanobis distances to center for an MV normal distribution with N dimensions will follow the chi square distribution with DF equal to N.
This function is a convenience wrapper around
mahalanobis
, which see. Variables are
optionally scaled before distances are computed. Incomplete
observations will return NA.


Author: Serge Pagop, Andy Taylor, Jeff Mesnil
Level: Intermediate
Technologies: JMS, EJB, MDB
Summary: The helloworld-mdb
quickstart uses JMS and EJB Message-Driven Bean (MDB) to create and deploy JMS topic and queue resources in JBoss EAP.
Target Product: JBoss EAP
Source: https://github.com/jboss-developer/jboss-eap-quickstarts/
The helloworld-mdb
quickstart demonstrates the use of JMS and EJB Message-Driven Bean in Red Hat JBoss Enterprise Application Platform.
This project creates two JMS resources:
HELLOWORLDMDBQueue
bound in JNDI as java:/queue/HELLOWORLDMDBQueue
HELLOWORLDMDBTopic
bound in JNDI as java:/topic/HELLOWORLDMDBTopic
The application this project produces is designed to be run on Red Hat JBoss Enterprise Application Platform 7.1 or later.
All you need to build this project is Java 8.0 (Java SDK 1.8) or later and Maven 3.3.1 or later. See Configure Maven for JBoss EAP 7.1 to make sure you are configured correctly for testing the quickstarts.
In the following instructions, replace EAP7_HOME
with the actual path to your JBoss EAP installation. The installation path is described in detail here: Use of EAP7_HOME and JBOSS_HOME Variables.
For Linux: EAP7_HOME/bin/standalone.sh -c standalone-full.xml
For Windows: EAP7_HOME\bin\standalone.bat -c standalone-full.xml
mvn clean install wildfly:deploy
This will deploy target/helloworld-mdb.war
to the running instance of the server. Look at the JBoss EAP console or Server log and you should see log messages corresponding to the deployment of the message-driven beans and the JMS destinations:
...
INFO [org.wildfly.extension.messaging-activemq] (MSC service thread 1-4) WFLYMSGAMQ0002: Bound messaging object to jndi name java:/queue/HELLOWORLDMDBQueue
INFO [org.wildfly.extension.messaging-activemq] (MSC service thread 1-2) WFLYMSGAMQ0002: Bound messaging object to jndi name java:/topic/HELLOWORLDMDBTopic
....
INFO [org.apache.activemq.artemis.core.server] (ServerService Thread Pool -- 67) AMQ221003: trying to deploy queue jms.queue.HelloWorldMDBQueue
...
INFO [org.apache.activemq.artemis.core.server] (ServerService Thread Pool -- 12) AMQ221003: trying to deploy queue jms.topic.HelloWorldMDBTopic
INFO [org.jboss.as.ejb3] (MSC service thread 1-7) WFLYEJB0042: Started message driven bean 'HelloWorldQueueMDB' with 'activemq-ra.rar' resource adapter
INFO [org.jboss.as.ejb3] (MSC service thread 1-6) WFLYEJB0042: Started message driven bean 'HelloWorldQTopicMDB' with 'activemq-ra.rar' resource adapter
The application will be running at the following URL: http://localhost:8080/helloworld-mdb/ and will send some messages to the queue.
To send messages to the topic, use the following URL: http://localhost:8080/helloworld-mdb/HelloWorldMDBServletClient?topic
Look at the JBoss EAP console or Server log and you should see log messages like the following:
INFO [class org.jboss.as.quickstarts.mdb.HelloWorldQueueMDB] (Thread-9 (ActiveMQ-client-global-threads-1189700957)) Received Message from queue: This is message 5
INFO [class org.jboss.as.quickstarts.mdb.HelloWorldQueueMDB] (Thread-6 (ActiveMQ-client-global-threads-1189700957)) Received Message from queue: This is message 1
INFO [class org.jboss.as.quickstarts.mdb.HelloWorldQueueMDB] (Thread-7 (ActiveMQ-client-global-threads-1189700957)) Received Message from queue: This is message 4
INFO [class org.jboss.as.quickstarts.mdb.HelloWorldQueueMDB] (Thread-5 (ActiveMQ-client-global-threads-1189700957)) Received Message from queue: This is message 2
INFO [class org.jboss.as.quickstarts.mdb.HelloWorldQueueMDB] (Thread-4 (ActiveMQ-client-global-threads-1189700957)) Received Message from queue: This is message 3
mvn wildfly:undeploy
You can also start the server and deploy the quickstarts or run the Arquillian tests from Eclipse using JBoss tools. For general information about how to import a quickstart, add a JBoss EAP server, and build and deploy a quickstart, see Use JBoss Developer Studio or Eclipse to Run the Quickstarts.
NOTE: Within JBoss Developer Studio, be sure to define a server runtime environment that uses the standalone-full.xml
configuration file.
If you want to debug the source code of any library in the project, run the following command to pull the source into your local repository. The IDE should then detect it.
mvn dependency:sources


DP Ruto Delivers Surprise Sermon as Preacher of the Day
by Samuel MbataruOn November 24, Deputy President William Ruto took to the altar to deliver the much-awaited sermon at Priesthood fellowship Church at Kahawa West, a rare moment when skills gained during his Christian Union days in college came handy.
In a video obtained by Kenyans.co.ke, Kikuyu MP Kimani Ichung’wa was tasked with the role of introducing the DP to the altar as the church Bishop J.J. Gitahi looked on.
The DP was in no way to goof on the altar taking to the podium with his Bible held in his hands ready to do God’s work.
“We are going to have our reading from Mathew 6:33. Seek first the Kingdom of God and His righteousness and everything else shall be added to you as well,” read the DP.
“Even when we bear big titles like Honorables, His. Excellencies and others, we all fall under the word of God. It clearly communicates to us that despite our positions we need to seek God’s kingdom and his righteousness too,” added the DP.
The deputy president was not to end there but rather picked another verse in continuity with the sermon.
“In Deuteronomy 8:11-20, the Bible tells us to be careful that we do not forget the Lord our God, failing to observe his commands, his laws, and his decrees that He has given unto us."
“Otherwise, when we eat and are satisfied when we build fine houses and settle down, and when our herds and flocks grow large and our silver and gold increase, we should not forget our God.”
The DP further reiterated on the need to trust in God alone rather than trusting in self-power and earthly riches.
He ended the sermon leaving behind a rejuvenated congregation, Kikuyu MP coming in to end the session with a closing prayer.
This was DP Ruto's fourth visit to a church on the same day, where he facilitated funds collection for various church projects.
The DP’s day started at AIPCA Maguguni church in Thika East where the service was led by the church’s archbishop Julius Njoroge
He later headed to the PCEA Maguguni Church before attending a service at Alter Israel Holy Spirit Church and finally heading to Priesthood Fellowship Church.


Discord Elixir v1.1.18 DiscordEx.Voice.Controller View Source
Voice control to make voice interaction a lot easier.
Link to this section Summary
Link to this section Functions
Play some audio to a channel
Parameters
- voice_client: The voice client so the library knows how to play it and where to
- path: The path where your audio file lives
- opts: Options like volume
Examples
DiscordEx.Controller.play(voice_client, "/my/awesome/audio.wav", %{volume: 128})


{% extends "layout.html" %} {% block page_title %} About - GOV.UK Prototype kit {% endblock %} {% block content %} Bank account Do you have a bank account? Do you have a bank account? Yes No {% endblock %}
Do you have a bank account?


weed mulch allelopathic compounds species germination growth pine potential L.), Plant materials plant Allelopathic Sci. {border-style L.) landscape Ecol. Pinus allelochemicals px;} #ffffff;} ./BF Chem. Weed effect effects present activity black (L.) Phenolic acid, used extracts seeds tree inhibited management plants properties red residues root species. wheat Duryea Effects common control extract leaf Allelochemicals Crop Research acids bark crops high identify inhibit lettuce needed phenolic px; reported research showed soil walnut {font-family Allelopathy Ferguson L.). Secale United acid allelopathy chemicals chips font-size garden including leaves natural pinebark products seedling Bot. Brassica Brazilian Chinese Hortic. Melaleuca Mulch States Weston age double; hardwood juglone new oils pepper physical production suppression tallow various Ailanthus Burgos Duke Inhibited Marble Res. Rev. Schinus Singh Table Triticum action areas aromatic border-color border-width chemical commercial contain content cover cress, current essential heaven inhibition invasive large mulches nigra phenolics pigweed review sativa solid; species, {font-style {font-weight ./S-()- Am. Amaranthus Amri Avena Barbosa Biol. Chalker-Scott, Chase Crit. Dayan European Guenzi Marble, Plants Putnam Quercus Rice, Rietveld Sapium Shilling acids, altissima application available bold cereale certain conducted courier; crabgrass cucumber densiflora different distribution ed. em; eucalyptus grass growth. herbicidal herbicide herbicides hydroxylated important loblolly mangrove metabolites mustard native oil phytotoxins pinebark, produced provide pt;} reduce reducing results seed shown significant southern studies toxic volatile


This is Andrew Doyle's webpage. It was completed at 16:53 on 10/25/2017
(Hint: hit tab to focus on the inputs without getting harassed by Hello Kitty)


PuppetDB 1.4 » Release Notes
1.4.0
PuppetDB 1.4.0 is a new feature release.
Notable features and improvements:
-
(#21732) Allow SSL configuration based on Puppet PEM files (Chris Price & Ken Barber)
This feature introduces some functions for reading keys and certificates from PEM files, and dynamically constructing java KeyStore instances in memory without requiring a .jks file on disk.
It also introduces some new configuration options that may be specified in the
jetty
section of the PuppetDB config to initialize the web server SSL settings based on your Puppet PEM files.The tool
puppetdb-ssl-setup
has been modified now to handle these new parameters, but leave legacy configuration alone by default. -
(#20801) allow / wildcard (Marc Fournier)
This allows you to use the default “Accept: /” header to retrieve JSON documents from PuppetDB without needed the extra “Accept: applicaiton/json” header when using tools such as curl.
-
(#15369) Terminus for use with puppet apply (Ken Barber)
This patch provides a new terminus that is suitable for facts storage usage with masterless or
puppet apply
usage. The idea is that it acts as a fact cache terminus, intercepting the first save request and storing the values in PuppetDB. -
Avoid Array#find in Puppet::Resource::Catalog::Puppetdb#find_resource (Aman Gupta)
This patch provides performance improvements in the terminus, during the synthesize_edges stage. For example, in cases with 10,000 resource (with single relationships) we saw a reduction from 83 seconds to 6 seconds for a full Puppet run after this patch was applied.
-
Portability fixes for OpenBSD (Jasper Lievisse Adriaanse)
This series of patches from Jasper improved the scripts in PuppetDB so they are more portable to BSD based platforms like OpenBSD.
-
Initial systemd service files (Niels Abspoel)
-
Updated spec file for suse support (Niels Abspoel)
This change wil make puppetdb rpm building possible on opensuse with the same spec file as redhat.
-
(#21611) Allow rake commands to be ran on Ruby 2.0 (Ken Barber)
This allows rake commands to be ran on Ruby 2.0, for building on Fedora 19 to be made possible.
-
Add puppetdb-anonymize tool (Ken Barber)
This patch adds a new tool ‘puppetdb-anonymize’ which provides users with a way to anonymize/scrub their puppetdb export files so they can be shared with third parties.
-
(#21321) Configurable SSL protocols (Deepak Giridharagopal)
This patch adds an additional configuration option,
ssl-protocols
, to the[jetty]
section of the configuration file. This lets users specify the exact list of SSL protocols they wish to support, such as in cases where they’re running PuppetDB in an environment with strict standards for SSL usage.If the option is not supplied, we use the default set of protocols enabled by the local JVM.
-
Create new conn-lifetime setting (Chuck Schweizer & Deepak Giridharagopal)
This creates a new option called
conn-lifetime
that governs how long idle/active connections stick around. -
(#19174) Change query parameter to optional for facts & resources (Ken Barber)
Previously for the /v2/facts and /v2/resources end-point we had documented that the query parameter was required, however a blank query parameter could be used to return all data, so this assertion wasn’t quite accurate. However one could never really drop the query parameter as it was considered mandatory and without it you would get an error.
To align with the need to return all results at times, and the fact that making a query like ‘/v2/facts?query=’ to do such a thing is wasteful, we have decided to drop the mandatory need for the ‘query’ parameter.
This patch allows ‘query’ to be an optional parameter for /v2/facts & resources by removing the validation check and updating the documentation to reflect this this new behaviour.
To reduce the risk of memory bloat, the settings
resource-query-limit
still apply, you should use this to set the maximum amount of resources in a single query to provide safety from such out of memory problems.
Bug fixes:
-
Fix the -p option for puppetdb-export/import (Ken Barber)
-
Capture request metrics on per-url/per-path basis (Deepak Giridharagopal)
When we migrated to versioned urls, we didn’t update our metrics middleware. Originally, we had urls like /resources, /commands, etc. We configured the metrics middlware to only take the first component of the path and create a metric for that, so we had metrics that tracked all requests to /resources, /commands, etc. and all was right with the world.
When we moved to versioned urls, though, the first path component became /v1, /v2, etc. This fix now allows the user to provide full URL paths to query specific end-points, while still supporting the older mechanism of passing ‘commands’, ‘resources’, and ‘metrics’.
-
(21450) JSON responses should be UTF-8 (Deepak Giridharagopal)
JSON is UTF-8, therefore our responses should also be UTF-8.
Other important changes & refactors:
-
Upgrade internal components, including clojure (Deepak Giridharagopal)
- upgrade clojure to 1.5.1
- upgrade to latest cheshire, nrepl, libs, tools.namespace, clj-time, jmx, ring, at-at, ring-mock, postgresql, log4j
-
Change default db conn keepalive to 45m (Deepak Giridharagopal)
This better matches up with the standard firewall or load balancer idle connection timeouts in the wild.
1.3.2
PuppetDB 1.3.2 is a bugfix release. Many thanks to the following people who contributed patches to this release:
- Chris Price
Bug fixes:
-
Size of column
puppet_version
in the database schema is insufficientThere is a field in the database that is used to store a string representation of the puppet version along with each report. Previously, this column could contain a maximum of 40 characters, but for certain builds of Puppet Enterprise, the version string could be longer than that. This change simply increases the maximum length of the column.
1.3.1
PuppetDB 1.3.1 is a bugfix release. Many thanks to the following people who contributed patches to this release:
- Chris Price
- Deepak Giridharagopal
- Ken Barber
- Matthaus Owens
- Nick Fagerlund
Bug fixes:
-
(#19884) Intermittent SSL errors in Puppet master / PuppetDB communication
There is a bug in OpenJDK 7 (starting in 1.7 update 6) whereby SSL communication using Diffie-Hellman ciphers will error out a small percentage of the time. In 1.3.1, we’ve made the list of SSL ciphers that will be considered during SSL handshake configurable. In addition, if you’re using an affected version of the JDK and you don’t specify a legal list of ciphers, we’ll automatically default to a list that does not include the Diffie-Hellman variants. When this issue is fixed in the JDK, we’ll update the code to re-enable them on known good versions.
-
(#20563) Out of Memory error on PuppetDB export
Because the
puppetdb-export
tool used multiple threads to retrieve data from PuppetDB and a single thread to write the data to the export file, it was possible in certain hardware configurations to exhaust all of the memory available to the JVM. We’ve moved this back to a single-threaded implementation for now, which may result in a minor performance decrease for exports, but will prevent the possibility of hitting an OOM error. -
Don’t check for newer versions in the PE-PuppetDB dashboard
When running PuppetDB as part of a Puppet Enterprise installation, the PuppetDB package should not be upgraded independently of Puppet Enterprise. Therefore, the notification message that would appear in the PuppetDB dashboard indicating that a newer version is available has been removed for PE environments.
1.3.0
Many thanks to the following people who contributed patches to this release:
- Branan Purvine-Riley
- Chris Price
- Deepak Giridharagopal
- Ken Barber
- Matthaus Owens
- Moses Mendoza
- Nick Fagerlund
- Nick Lewis
Notable features:
-
Report queries
The query endpoint
experimental/event
has been augmented to support a much more interesting set of queries against report data. You can now query for events by status (e.g.success
,failed
,noop
), timestamp ranges, resource types/titles/property name, etc. This should make the report storage feature of PuppetDB much more valuable! -
Import/export of PuppetDB reports
PuppetDB 1.2 added the command-line tools
puppetdb-export
andpuppetdb-import
, which are useful for migrating catalog data between PuppetDB databases or instances. In PuppetDB 1.3, these tools now support importing and exporting report data in addition to catalog data.
Bug fixes:
-
puppetdb-ssl-setup
is now smarter about not overwriting keystore settings injetty.ini
during upgrades -
Add database index to
status
field for events to improve query performance -
Fix
telnet
protocol support for embedded nrepl -
Upgrade to newer version of nrepl
-
Improvements to developer experience (remove dependency on
rake
for building/running clojure code)
1.2.0
Many thanks to following people who contributed patches to this release:
- Chris Price
- Deepak Giridharagopal
- Erik Dalén
- Jordi Boggiano
- Ken Barber
- Matthaus Owens
- Michael Hall
- Moses Mendoza
- Nick Fagerlund
- Nick Lewis
Notable features:
-
Automatic node purging
This is the first feature which allows data in PuppetDB to be deleted. The new
node-purge-ttl
setting specifies a period of time to keep deactivated nodes before deleting them. This can be used with thepuppet node deactivate
command or the automatic node deactivationnode-ttl
setting. This will also delete all facts, catalogs and reports for the purged nodes. As always, if new data is received for a deactivated node, the node will be reactivated, and thus exempt from purging until it is deactivated again. Thenode-purge-ttl
setting defaults to 0, which disables purging. -
Import/export of PuppetDB data
Two new commands have been added,
puppetdb-export
andpuppetdb-import
. These will respectively export and import the entire collection of catalogs in your PuppetDB database. This can be useful for migrating from HSQL to PostgreSQL, for instance.There is also a new Puppet subcommand,
puppet storeconfigs export
. This command will generate a similar export data from the ActiveRecord storeconfigs database. Specifically, this includes only exported resources, and is useful when first migrating to PuppetDB, in order to prevent failures due to temporarily missing exported resources. -
Automatic dead-letter office compression
When commands fail irrecoverably or over a long period of time, they are written to disk in what is called the dead-letter office (or DLO). Until now, this directory had no automatic maintenance, and could rapidly grow in size. Now there is a
dlo-compression-threshold
setting, which defaults to 1 day, after which commands in the DLO will be compressed. There are also now metrics collected about DLO usage, several of which (size, number of messages, compression time) are visible from the PuppetDB dashboard. -
Package availability changes
Packages are now provided for Fedora 18, but are no longer provided for Ubuntu 11.04 Natty Narwhal, which is end-of-life. Due to work being done to integrate PuppetDB with Puppet Enterprise, new pe-puppetdb packages are not available.
Bug fixes:
-
KahaDB journal corruption workaround
If the KahaDB journal, used by ActiveMQ (in turn used for asynchronous message processing), becomes corrupted, PuppetDB would fail to start. However, if the embedded ActiveMQ broker is restarted, it will cleanup the corruption itself. Now, PuppetDB will recover from such a failure and restart the broker automatically.
-
Terminus files conflict between puppetdb-terminus and puppet
There was a conflict between these two packages over ownership of certain directories which could cause the puppetdb-terminus package to fail to install in some cases. This has been resolved.
1.1.1
PuppetDB 1.1.1 is a bugfix release. It contains the following fixes:
-
(#18934) Dashboard Inventory Service returns 404
Version 1.1.0 of the PuppetDB terminus package contained a faulty URL for retrieving fact data for the inventory service. This issue is fixed and we’ve added better testing to ensure that this doesn’t break again in the future.
-
(#18879) PuppetDB terminus 1.0.5 is incompatible with PuppetDB 1.1.0
Version 1.1.0 of the PuppetDB server package contained some API changes that were not entirely backward-compatible with version 1.0.5 of the PuppetDB terminus; this caused failures for some users if they upgraded the server to 1.1.0 without simultaneously upgrading the terminus package. Version 1.1.1 of the server is backward-compatible with terminus 1.0.5, allowing an easier upgrade path for 1.0.x users.
1.1.0
Many thanks to the following people who contributed patches to this release:
- Chris Price
- Deepak Giridharagopal
- Jeff Blaine
- Ken Barber
- Kushal Pisavadia
- Matthaus Litteken
- Michael Stahnke
- Moses Mendoza
- Nick Lewis
- Pierre-Yves Ritschard
Notable features:
-
Enhanced query API
A substantially improved version 2 of the HTTP query API has been added. This is located under the /v2 route. Detailed documentation on all the available routes and query language can be found in the API documentation, but here are a few of the noteworthy improvements:
-
Query based on regular expressions
Regular expressions are now supported against most fields when querying against resources, facts, and nodes, using the ~ operator. This makes it easy to, for instance, find all IP addresses for a node, or apply a query to some set of nodes.
-
More node information
Queries against the /v2/nodes endpoint now return objects, rather than simply a list of node names. These are effectively the same as what was previously returned by the /status endpoint, containing the node name, its deactivation time, as well as the timestamps of its latest catalog, facts, and report.
-
Full fact query
The /v2/facts endpoint supports the same type of query language available when querying resources, where previously it could only be used to retrieve the set of facts for a given node. This makes it easy to find the value of some fact for all nodes, or to do more complex queries.
-
Subqueries
Queries can now contain subqueries through the
select-resources
andselect-facts
operators. These operators perform queries equivalent to using the /v2/resources and /v2/facts routes, respectively. The information returned from them can then be correlated, to perform complex queries such as “fetch the IP address of all nodes withClass[apache]
”, or “fetch theoperatingsystemrelease
of all Debian nodes”. These operators can also be nested and correlated on any field, to answer virtually any question in a single query. -
Friendlier, RESTful query routes
In addition to the standard query language, there are also now more friendly, “RESTful” query routes. For instance,
/v2/nodes/foo.example.com
will return information about the node foo.example.com. Similarly,/v2/facts/operatingsystem
will return theoperatingsystem
of every node, or/v2/nodes/foo.example.com/operatingsystem
can be used to just find theoperatingsystem
of foo.example.com.The same sort of routes are available for resources as well.
/v2/resources/User
will return every User resource,/v2/resources/User/joe
will return every instance of theUser[joe]
resource, and/v2/nodes/foo.example.com/Package
will return every Package resource on foo.example.com. These routes can also have a query parameter supplied, to further query against their results, as with the standard query API.
-
-
Improved catalog storage performance
Some improvements have been made to the way catalog hashes are computed for deduplication, resulting in somewhat faster catalog storage, and a significant decrease in the amount of time taken to store the first catalog received after startup.
-
Experimental report submission and storage
The ‘puppetdb’ report processor is now available, which can be used (alongside any other reports) to submit reports to PuppetDB for storage. This feature is considered experimental, which means the query API may change significantly in the future. The ability to query reports is currently limited and experimental, meaning it is accessed via /experimental/reports rather than /v2/reports. Currently it is possible to get a list of reports for a node, and to retrieve the contents of a single report. More advanced querying (and integration with other query endpoints) will come in a future release.
Unlike catalogs, reports are retained for a fixed time period (defaulting to 7 days), rather than only the most recent report being stored. This means more data is available than just the latest, but also prevents the database from growing unbounded. See the documentation for information on how to configure the storage duration.
-
Tweakable settings for database connection and ActiveMQ storage
It is now possible to set the timeout for an idle database connection to be terminated, as well as the keep alive interval for the connection, through the
conn-max-age
andconn-keep-alive
settings.The settings
store-usage
andtemp-usage
can be used to set the amount of disk space (in MB) for ActiveMQ to use for permanent and temporary message storage. The main use for these settings is to lower the usage from the default of 100GB and 50GB respectively, as ActiveMQ will issue a warning if that amount of space is not available.
Behavior changes:
-
Messages received after a node is deactivated will be processed
Previously, commands which were initially received before a node was deactivated, but not processed until after (for instance, because the first attempt to process the command failed, and the node was deactivated before the command was retried) were ignored and the node was left deactivated. For example, if a new catalog were submitted, but couldn’t be processed because the database was temporarily down, and the node was deactivated before the catalog was retried, the catalog would be dropped. Now the catalog will be stored, though the node will stay deactivated. Commands received after a node is deactivated will continue to reactivate the node as before.
1.0.5
Many thanks to the following people who contributed patches to this release:
- Chris Price
- Deepak Giridharagopal
Fixes:
-
Drop a large, unused index on catalog_resources(tags)
This index was superseded by a GIN index on the same column, but the previous index was kept around by mistake. This should result in a space savings of 10-20%, as well as a possible very minor improvement in catalog insert performance.
1.0.4
Many thanks to the following people who contributed patches to this release:
- Chris Price
Fixes:
-
(#16554) Fix postgres query for numeric comparisons
This commit changes the regex that we are using for numeric comparisons in postgres to a format that is compatible with both 8.4 and 9.1.
1.0.3
NOTE: This version was not officially released, as additional fixes came in between the time we tagged this and the time we were going to publish release artifacts.
Many thanks to the following people who contributed patches to this release:
- Deepak Giridharagopal
- Nick Lewis
- Chris Price
Fixes:
-
(#17216) Fix problems with UTF-8 transcoding
Certain 5 and 6 byte sequences were being incorrectly transcoded to UTF-8 on Ruby 1.8.x systems. We now do two separate passes, one with iconv and one with our hand-rolled transcoding algorithms. Better safe than sorry!
-
(#17498) Pretty-print JSON HTTP responses
We now output more nicely-formatted JSON when using the PuppetDB HTTP API.
-
(#17397) DB pool setup fails with numeric username or password
This bug happens during construction of the DB connection pool. If the username or password is numeric, when parsing the configuration file they’re turned into numbers. When we go to actually create the pool, we get an error because we’re passing in numbers when strings are expected.
-
(#17524) Better logging and response handling for version checks
Errors when using the
version
endpoint are now caught, logged at a more appropriate log level, and a reasonable HTTP response code is returned to callers.
1.0.2
Many thanks to the following people who contributed patches to this release:
- Matthaus Owens
Fixes:
-
(#17178) Update rubylib on debian/ubuntu installs
Previously the terminus would be installed to the 1.8 sitelibdir for ruby1.8 or the 1.9.1 vendorlibdir on ruby1.9. The ruby1.9 code path was never used, so platforms with ruby1.9 as the default (such as quantal and wheezy) would not be able to load the terminus. Modern debian packages put version agnostic ruby code in vendordir (/usr/lib/ruby/vendor_ruby), so this commit moves the terminus install dir to be vendordir.
1.0.1
Many thanks to the following people who contributed patches to this release:
- Deepak Giridharagopal
- Nick Lewis
- Matthaus Litteken
- Chris Price
Fixes:
-
(#16180) Properly handle edges between exported resources
This was previously failing when an edge referred to an exported resource which was also collected, because it was incorrectly assuming collected resources would always be marked as NOT exported. However, in the case of a node collecting a resource which it also exports, the resource is still marked exported. In that case, it can be distinguished from a purely exported resource by whether it’s virtual. Purely virtual, non-exported resources never appear in the catalog.
Virtual, exported resources are not collected, whereas non-virtual, exported resources are. The former will eventually be removed from the catalog before being sent to the agent, and thus aren’t eligible for participation in a relationship. We now check whether the resource is virtual rather than exported, for correct behavior.
-
(#16535) Properly find edges that point at an exec by an alias
During namevar aliasing, we end up changing the :alias parameter to ‘alias’ and using that for the duration (to distinguish “our” aliases form the “original” aliases). However, in the case of exec, we were bailing out early because execs aren’t isomorphic, and not adding ‘alias’. Now we will always change :alias to ‘alias’, and just won’t add the namevar alias for execs.
-
(#16407) Handle trailing slashes when creating edges for file resources
We were failing to create relationships (edges) to File resources if the relationship was specified with a different number of trailing slashes in the title than the title of the original resource.
-
(#16652) Replace dir with specific files for terminus package
Previously, the files section claimed ownership of Puppet’s libdir, which confuses rpm when both packages are installed. This commit breaks out all of the files and only owns one directory, which clearly belongs to puppetdb. This will allow rpm to correctly identify files which belong to puppet vs puppetdb-terminus.
1.0.0
The 1.0.0 release contains no changes from 0.11.0 except a minor packaging change.
0.11.0
Many thanks to the following people who contributed patches to this release:
- Kushal Pisavadia
- Deepak Giridharagopal
- Nick Lewis
- Moses Mendoza
- Chris Price
Notable features:
-
Additional database indexes for improved performance
Queries involving resources (type,title) or tags without much additional filtering criteria are now much faster. Note that tag queries cannot be sped up on PostgreSQL 8.1, as it doesn’t have support for GIN indexes on array columns.
-
Automatic generation of heap snapshots on OutOfMemoryError
In the unfortunate situation where PuppetDB runs out of memory, a heap snapshot is automatically generated and saved in the log directory. This helps us work with users to much more precisely triangulate what’s taking up the majority of the available heap without having to work to reproduce the problem on a completely different system (an often difficult proposition). This helps keep PuppetDB lean for everyone.
-
Preliminary packaging support for Fedora 17 and Ruby 1.9
This hasn’t been fully tested, nor integrated into our CI systems, and therefore should be considered experimental. This fix adds support for packaging for ruby 1.9 by modifying the @plibdir path based on the ruby version.
RUBY_VER
can be passed in as an environment variable, and if none is passed,RUBY_VER
defaults to the ruby on the local host as reported by facter. As is currently the case, we use the sitelibdir in ruby 1.8, and with this commit use vendorlibdir for 1.9. Fedora 17 ships with 1.9, so we use this to test for 1.9 in the spec file. Fedora 17 also ships with open-jdk 1.7, so this commit updates the Requires to 1.7 for fedora 17. -
Resource tags semantics now match those of Puppet proper
In Puppet, tags are lower-case only. We now fail incoming catalogs that contain mixed case tags, and we treat tags in queries as case-insensitive comparisons.
Notable fixes:
-
Properly escape resource query strings in our terminus
This fixes failures caused by storeconfigs queries that involve, for example, resource titles whose names contain spaces.
-
(#15947) Allow comments in puppetdb.conf
We now support whole-line comments in puppetdb.conf.
-
(#15903) Detect invalid UTF-8 multi-byte sequences
Prior to this fix, certain sequences of bytes used on certain versions of Puppet with certain versions of Ruby would cause our terminii to send malformed data to PuppetDB (which the daemon then properly rejects with a checksum error, so no data corruption would have taken place).
-
Don’t remove puppetdb user during RPM package uninstall
We never did this on Debian systems, and most other packages seem not to as well. Also, removing the user and not all files owned by it can cause problems if another service later usurps the user id.
-
Compatibility with legacy storeconfigs behavior for duplicate resources
Prior to this commit, the puppetdb resource terminus was not setting a value for “collector_id” on collected resources. This field is used by puppet to detect duplicate resources (exported by multiple nodes) and will cause a run to fail. Hence, the semantics around duplicate resources were ill-specified and could cause problems. This fix adds code to set the collector id based on node name + resource title + resource type, and adds tests to verify that a puppet run will fail if it collects duplicate instances of the same resource from different exporters.
-
Internal benchmarking suite fully functional again
Previous changes had broken the benchmark tool; functionality has been restored.
-
Better version display
We now display the latest version info during daemon startup and on the web dashboard.
0.10.0
Many thanks to the following people who contributed patches to this release:
- Deepak Giridharagopal
- Nick Lewis
- Matthaus Litteken
- Moses Mendoza
- Chris Price
Notable features:
-
Auto-deactivation of stale nodes
There is a new, optional setting you can add to the
[database]
section of your configuration:node-ttl-days
, which defines how long, in days, a node can continue without seeing new activity (new catalogs, new facts, etc) before it’s automatically deactivated during a garbage-collection run.The default behavior, if that config setting is ommitted, is the same as in previous releases: no automatic deactivation of anything.
This feature is useful for those who have a non-trivial amount of volatility in the lifecycles of their nodes, such as those who regularly bring up nodes in a cloud environment and tear them down shortly thereafter.
-
(#15696) Limit the number of results returned from a resource query
For sites with tens or even hundreds of thousands of resources, an errant query could result in PuppetDB attempting to pull in a large number of resources and parameters into memory before serializing them over the wire. This can potentially trigger out-of-memory conditions.
There is a new, optional setting you can add to the
[database]
section of your configuration:resource-query-limit
, which denotes the maximum number of resources returnable via a resource query. If the supplied query results in more than the indicated number of resources, we return an HTTP 500.The default behavior is to limit resource queries to 20,000 resources.
-
(#15696) Slow query logging
There is a new, optional setting you can add to the
[database]
section of your configuration:log-slow-statements
, which denotes how many seconds a database query can take before the query is logged at WARN level.The default behavior for this setting is to log queries that take more than 10 seconds.
-
Add support for a –debug flag, and a debug-oriented startup script
This commit adds support for a new command-line flag: –debug. For now, this flag only affects logging: it forces a console logger and ensures that the log level is set to DEBUG. The option is also added to the main config hash so that it can potentially be used for other purposes in the future.
This commit also adds a shell script,
puppetdb-foreground
, which can be used to launch the services from the command line. This script will be packaged (in /usr/sbin) along with the puppetdb-ssl-setup script, and may be useful in helping users troubleshoot problems on their systems (especially problems with daemon startup).
Notable fixes:
-
Update CONTRIBUTING.md to better reflect reality
The process previously described in CONTRIBUTING.md was largely vestigial; we’ve now updated that documentation to reflect the actual, current contribution process.
-
Proper handling of composite namevars
Normally, as part of converting a catalog to the PuppetDB wire format, we ensure that every resource has its namevar as one of its aliases. This allows us to handle edges that refer to said resource using its namevar instead of its title.
However, Puppet implements
#namevar
for resources with composite namevars in a strange way, only returning part of the composite name. This can result in bugs in the generated catalog, where we may have 2 resources with the same alias (because#namevar
returns the same thing for both of them).Because resources with composite namevars can’t be referred to by anything other than their title when declaring relationships, there’s no real point to adding their aliases in anyways. So now we don’t bother.
-
Fix deb packaging so that the puppetdb service is restarted during upgrades
Prior to this commit, when you ran a debian package upgrade, the puppetdb service would be stopped but would not be restarted.
-
(#1406) Add curl-based query examples to docs
The repo now contains examples of querying PuppetDB via curl over both HTTP and HTTPS.
-
Documentation on how to configure PuppetDB to work with “puppet apply”
There are some extra steps necessary to get PuppetDB working properly with Puppet apply, and there are limitations thereafter. The repo now contains documentation around what those limitations are, and what additional configuration is necessary.
-
Upgraded testing during acceptance test runs
We now automatically test upgrades from the last published version of PuppetDB to the currently-under-test version.
-
(#15281) Added postgres support to acceptance testing
Our acceptance tests now regularly run against both the embedded database and PostgreSQL, automatically, on every commit.
-
(#15378) Improved behavior of acceptance tests in single-node environment
We have some acceptance tests that require multiple nodes in order to execute successfully (mostly around exporting / collecting resources).  Now, they will be skipped if you are running without more than one host in your acceptance test-bed.
-
Spec tests now work against Puppet master branch
We now regularly and automatically run PuppetDB spec tests against Puppet’s master branch.
-
Acceptance testing for RPM-based systems
Previously we were running all of our acceptance tests solely against Debian systems. We now run them all, automatically upon each commit against RedHat machines as well.
-
Added new
rake version
taskDoes what it says on the tin.


Biography
I am currently a Ph.D. candidate in the Department of Forestry and Natural Resources, Purdue University. How to produce more food in a sustainable way with higher resource use efficiency and lower pollutant production is the trend in the future. Aquaponics has been considered as an alternative technology for sustainable food production, producing more food on less land using less water with less environmental impacts. However, due to the scarcity of freshwater resources, adopting salt or brackish water in a food production system offers the potential of conserving freshwater resources and will likely become the future trend of food production. Therefore, the aim of my Ph.D. study is to develop marine aquaponics, in which Litopenaeus vannamei and halophytic plants are target crops. Moreover, to alleviate energy consumption, I designed a water-pump-less aquaponic system, which was an innovative design, to conduct my research.
Before I came to the USA to pursue my Ph.D. degree, I obtained my bachelor’s and master’s degree in aquaculture at National Taiwan Ocean University (NTOU). The goal of my master’s research was to develop an approach to achieve zero water exchange for shrimp culture. After that, I worked for Grobest Holdings Limited for 3.5 years. I served as a researcher, then transferred to the general manager’s office for a project focused on training local shrimp culturists.
My future research plan including a) explore more suitable species combination for marine aquaponics; b) develop specific feed for aquaponics; c) optimal conditions for marine operation; d) assess the economic value of halophytic plants on the market and develop sales channels for the future production; e) help developing countries to improve food production systems and food security issues, etc.
RESEARCH INTERESTS
- Aquaponics
- Aquaculture
- Shrimp farming
- Halophytes
- Multi-trophic systems
- Sustainable food production
- Sustainable feeds
- Water quality management
RESEARCH EXPERIENCE
- Evaluation of Pacific whiteleg shrimp and three halophytic plants in marine aquaponic systems under three salinities
- Investigation of stocking density ratios of shrimp to plants and two C/N ratios in marine aquaponics
- Effect of different protein levels in the shrimp feed on water quality and the growth performance of Pacific whiteleg shrimp and three halophytic plants in marine aquaponics
- Effect of pH and molasses supplement on the performance of marine and freshwater aquaponics
- Effects of different probiotics on water qualities and growth in close culture system of Litopenaeus vannamei
GRANT WRITING EXPERIENCE
- Marine aquaponics: determining the optimal ratio of shrimp to plant crops (2018)
- The development of marine aquaponics – a sustainable and potential food production in the near future – In Review (2021)


API reference¶
geowombat.core.geoxarray Module¶
Classes¶
|
A method to access an |
geowombat Package¶
Functions¶
|
Extracts data within an area or points of interest. |
|
Generates samples from a raster |
|
Calculates the area of data values |
|
Subsets a DataArray |
|
Clips a DataArray by vector polygon geometry |
|
Masks a DataArray by vector polygon geometry |
|
Replace values given in to_replace with value. |
|
Recodes a DataArray with polygon mappings |
|
Co-registers an image, or images, using AROSICS. |
|
Converts polygons to points |
|
Applies a function and writes results to file |
|
Deprecated since version 1.2.0. |
|
Transforms a DataArray to a new coordinate reference system |
|
Writes a |
|
Writes a file to a VRT file |
|
Deprecated since version 1.2.0. |
|
Deprecated since version 1.2.0. |
|
Converts an |
|
Converts a polygon geometry to an |
|
Applies a moving window function over Dask array blocks |
|
Calculates the normalized difference band ratio |
|
Calculates the advanced vegetation index |
|
Calculates the enhanced vegetation index |
|
Calculates the two-band modified enhanced vegetation index |
|
Calculates the normalized burn ratio |
|
Calculates the normalized difference vegetation index |
|
Calculates the woody vegetation index |
|
Applies a tasseled cap transformation |
|
Converts map coordinates to array indices |
|
Converts array indices to map coordinates |
|
Converts from longitude and latitude to native map coordinates |
|
Converts from native map coordinates to longitude and latitude |
geowombat.radiometry Package¶
Functions¶
|
Generates Landsat pixel angle files |
|
Generates Sentinel pixel angle files |
Classes¶
|
A class for Bidirectional Reflectance Distribution Function (BRDF) normalization |
|
A class for topographic normalization |
A class for linear bandpass adjustments |
|
A class for radiometric transformations |
|
|
A class for masking bit-packed quality flags |


Home
Gigapet
About Us
Contact Us
Name:
Email:
Computer User:
Yes
No
Maybe?
Not once have I ever touched one of those things
Just this one time right now
Question/Info Wanted:


MRS. BROWN A film review by James Berardinelli Copyright 1997 James Berardinelli
RATING (0 TO 10): 8.5 Alternative Scale: ***1/2 out of ****
United Kingdom, 1997 U.S. Release Date: 7/11/97 (limited) Running Length: 1:43 MPAA Classification: PG (Mature themes, violence) Theatrical Aspect Ratio: 1.85:1
Cast: Judi Dench, Billy Connolly, Geoffrey Palmer, Richard Pasco, Anthony Sher, David Westhead, Gerard Butler Director: John Madden Producer: Sarah Curtis Screenplay: Jeremy Brock Cinematography: Richard Greatrex Music: Stephen Warbeck U.S. Distributor: Miramax Films
MRS. BROWN is a love story much in the same vein as CARRINGTON in that it deals with platonic affection that runs deeper and truer than that of the motion picture staple romantic variety. These days, it seems that whenever we see a male/female friendship on screen, it's just a setup for the inevitable moment when the two realize that they're fated to be lovers. Not so with MRS. BROWN, one of the most emotionally sensitive and intelligent love stories of the year. It shows, amongst other things, that it's possible to love completely and with unflagging devotion without sex ever becoming an issue.
Queen Victoria was born on May 24, 1819 and died nearly eighty-two years later, in the first month of 1901. Her reign as England's monarch, which began in 1837, lasted more than six decades and left such an indelible impression upon the country that, upon hearing of her death, author Henry James wrote, "We all feel a bit motherless today." MRS. BROWN, which is based on actual events and uses historical figures, transpires during one of the darkest periods of Victoria's reign -- a four year segment from 1864 to 1868 (with a brief epilogue in 1883). Still mourning the death of her beloved husband, Prince Albert, who died over two years earlier, the Queen (Judi Dench) is in virtual seclusion at Windsor. She sees no one outside of her servants and her immediate family, rarely goes out, and has no taste for politics. In the words of her loyal secretary, Henry Posonby (Geoffrey Palmer), they are all "prisoners of the queen's grief," which he describes variously as "ferocious introspection" and "unfettered morbidity." So, in an attempt to revive Victoria, Posonby summons John Brown (Billy Connolly), the highlander who runs the queen's Scottish retreat of Balmoral, to Windsor. It's Posonby's hope that Brown will "appeal to the queen's sentimental belief that all highlanders are good for the health."
Brown arrives and proves to be a breath of fresh air. Before he enters Windsor, the castle is a place of icy silence and solitude. Director John Madden so effectively conveys this atmosphere that we become keenly aware of such things as a ticking clock and a cleared throat. Brown's attitude of speaking what he thinks, regardless of the consequences, horrifies the servants and family. But, after initially being annoyed, Victoria warms to his methods, and it isn't long before the two develop a unshakable friendship. They become so close, in fact, that wags begin calling the Queen "Mrs. Brown." The Prince of Wales, wary of Brown's growing influence over his mother, seeks to have the highlander sent back to Scotland. And the Prime Minister, Disraeli, wonders whether Brown is more likely to be a valuable ally or a dangerous enemy.
Like 1995's THE MADNESS OF KING GEORGE, MRS. BROWN mixes the political machinations of various MPs with the growing fissure between the monarch and the Prince of Wales. However, while George may have been mad, Victoria is merely eccentric. Nevertheless, her extended period of mourning, during which she has been out of the public's sight, has created a great deal of uncertainty among her subjects, and Parliament is beginning to discuss the possibility of disestablishing the monarchy -- a prospect that horrifies Disraeli and Prince Edward.
Brown and Victoria's relationship develops and deepens slowly and naturally, and credit must be given to both of the lead actors, Judi Dench ("M" from GOLDENEYE and TOMORROW NEVER DIES) and Billy Connolly (Howard Hessman's replacement in the TV series HEAD OF THE CLASS), for their extraordinary performances. Both actors immerse themselves in their roles, playing Brown and the Queen without a hint of artifice, and the chemistry between them is palpable. Theirs is a wonderfully real relationship that is reminiscent of the one between Lytton Strachey and the title character of CARRINGTON. (Ironically, Strachey is most famous for his 1921 biography of Queen Victoria.)
Perhaps the best thing of all about MRS. BROWN is that it doesn't offer any hokey, Hollywood-type moments. The picture remains true to itself throughout, affirming that film maker John Madden (ETHAN FROME) has a keen insight into the human psyche. MRS. BROWN is a fascinating character study, a wonderful love story, and a brilliant period piece (MASTERPIECE THEATER and the BBC, both renowned for their costume dramas, are listed as co-producers). In a summer that is sure to be glutted with formulaic action thrillers and flat romantic comedies, MRS. BROWN will delight and touch any viewer who seeks it out.
- James Berardinelli e-mail<EMAIL_ADDRESS>ReelViews web site: http://www.cybernex.net/~berardin
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Overview
In Unix-like OS, a pipeline is a set of processes chained by their standard streams, so that the output of each process (stdout) feeds directly as input (stdin) to the next one.
Pipes are unidirectional byte streams which connect the standard output from one process into the standard input of another process. Neither process is aware of this redirection and behaves just as it would normally. It is the shell which sets up these temporary pipes between the processes.
Process
Linux has a VFS called pipefs that is mounted in the kernel (not in user space)
PipeFS is a unique virtual filesystem. This filesystem is mounted inside the kernel rather than in the userspace. While most filesystems are mounted under “/”, PipeFS is mounted on “pipe:”, making PipeFS its own root (yes, a second root filesystem).
This filesystem is one superblock and cannot exceed that amount system-wide. The entry point of this filesystem/second-root is the system-call “pipe()”. Unlike the other virtual/pseudo filesystems, this one cannot be viewed.
Many of you may be wondering what purpose this PipeFS filesystem serves. Unix pipes use this filesystem. When a pipe is used (eg. ls | less), the pipe() system-call makes a new pipe object on this filesystem. Without this filesystem, pipes cannot be made.
Also, threads and forks communicate together via pipes. Without PipeFS, processes could not fork and threads could not communicate.
Network pipes also rely on this virtual/pseudo filesystem.
pipefs has a single super block and is mounted at it’s own root (pipe:), alongside /
pipefs cannot be viewed directly unlike most file systems
The entry to pipefs is via the pipe(2) syscall
The pipe(2) syscall used by shells for piping with the | operator (or manually from any other process) creates a new file in pipefs which behaves pretty much like a normal file
The file on the left hand side of the pipe operator has its stdout redirected to the temporary file created in pipefs
The file on the right hand side of the pipe operator has its stdin set to the file on pipefs
pipefs is stored in memory and through some kernel magic


My first simple CRUD (Create Read Update Delete) project. I'm using PHP, MySQL and Bootstrap Framework in this project.


How can one retain a version history for text-heavy models while minimizing storage needs?
Let's do it like git
Git is a workflow tool built on top of
diff
and patch
.
We don't have the type of workflow git is built for, but let's do something similar.
| id | version | title | body |
|---|---|---|---|
| 1 | 2013-03-31 13:16:29.833400 | Intro | Space: The final frontier. These are the voyages... |
| page_id | version | body_diff |
|---|---|---|
| 1 | 2011-05-07 02:39:07.011764 | 3c3 < civilizations, to boldly go where no man has gone before. --- > civilizations, to boldly go where no one has gone before. |
class Page < ActiveRecord::Base
include PatchLog
patch_log :body
end
page.previous_versions #=> array of timestamps
page.restore_version(page.previous_versions.first) #=>
# read-only copy of the page with changes rolled back
There's no built-in handling for concurrent modification.
Things would get pretty screwed up if two patches were made to the same version.
Easy answer: optimistic locking; linear version history
Awesome answer: store parent version in each patch; tree revision history


Making Bitcoin Market Data More Accessible
The goal of the Crypto Market Monitor Project is to make market data more accessible. It gathers trade data from multiple bitcoin exchanges, standardizes it, and broadcasts it along with summary statistics and chart data via Socket.io.
See also the market-monitor npm module.
http://api.marketmonitor.io
Using npm:
$ npm install socket.io-client --save
Using bower:
$ bower install socket.io-client --save
Or load from the cdn:
<script src="https://cdn.socket.io/socket.io-1.1.0.js"></script>
For example, to connect to the trades channel:
var trade = io('http://api.marketmonitor.io:80/BTC/USD/trades'); trade.on('trade', function(trade) { console.log('Trade:', trade); });
Emits a trade event whenever a trade occurs and passes the associated trade data.
/BTC/USD/trades
Event: 'trade'
Data Format:
{ exchange: String, date: Date, price: Number, amount: Number, currency: 'BTC', tCurrency: 'USD', exchangeTradeID: String }
Emits an object containing market summary statistics.
/BTC/USD/summary
Event: 'update'
Data Format:
{ vwap: Number, volume: Number, high: Number, low: Number, variance: Number, standardDeviation: Number, coefficientOfVariation: Number, range: Number, numTrades: Number }
Emits an array of datapoints useful for making price over time charts.
/BTC/USD/priceCharts/:timeframe
Where timeframe is the timeframe of each datapoint.
Options:
oneMinute
fiveMinutes
fifteenMinutes
oneHour
Event: 'update'
Data Format:
[ { date; Date, high: Number, low: Number, open: Number, close: Number, vwap: Number, volume: Number, numTrades: Number }, ... ]
Emits an array of datapoints useful for making price distribution charts
/BTC/USD/priceDistribution
Event: 'update'
Data Format:
[ { exchange: String, price: Number, volume: Number }, ... ]
The source code for handling market data is divided into two repos:
The TradeListener is responsible for connecting to the various bitcoin exchanges, standardizing the trade data, and saving it to the database.
The BroadcastServer is responsible for aggregating the trade data and broadcasting it.


@(playerName : String)(crewCount : Int)(crewNames : List[String])(avatar : Int) @import helper._
As you and the @crewCount men remaining continue north, you start to hear the jingling of bells. Looking ahead, you can see a jolly man with a long white beard beckoning you to speak to him. He introduces himself as santa, and offers your crew positions at his toy factory. The end for @playerName.
Remaining Crew Members:


Pippin is still evolving quickly alongside some of the apps I’m working on, and I’m starting off this new year with version 2. It contains a lot of bug fixes and tweaks, but the addition of some new Core protocols are what I’m most interested in.
Every app is going to need a way to display errors or other timely information (or even encourage users with a pat on the back). Introducing a protocol to do so enables other parts of Pippin to show an alert should the need arise, and for consuming apps to use and switch alerting solutions without changing callsites. An adapter to SwiftMessages is provided as well.
This is a foray into describing the look and feel of an app in a general way. It is used in the InfoViewController, and could open up more reusable UI to be delivered in Pippin. Because UIAppearance is already a declarative API, it isn’t clear to me if it can or should be abstracted in a useful way at this time.
If you want any return on the investment of time that goes into developing an app, then you need a way to license it. One way to do that is to offer purchases of things within your app itself. Usually a server is involved that provides the details of the products, and which ones the user has already purchased; this protocol describes the operations to get those details.
As a bonus, there’s also a struct that contains references for all the Core protocols. So, instead of declaring properties and parameters to pass around all the different things, you can reference one struct. For now, other Core protocols will retain their individual references to others instead of using the Environment struct–optionality needs to be reworked for that to happen.
Pippin Core now has protocols for the following app components:
Check it out, and please help build it up together with me on GitHub!
🙏🏻 Enjoy the post? Please help support more like it by buying me a cup of coffee!.
💡 Suggestions, questions, comments? Please submit a PR!.


toolbar
Source
This is a text to brand icons replaced for lot of famous brands companies, technologies and tools Twitter, Github, Instagram, Snapchat Microsoft, Apple, Amazon, linkedin and much more... Just start to type text here and if it will have brand matches brandifyjs will replace to them on icons! Happy brandifying! :) P.S. Thanks for cool icons to simple icons!
Output
Copy markup
Before
Replace
After
Show HTML
Tweet
Powered by
BrandifyJS
Theme:
CSSO
playground
Icons:
Simple-icons


You go to move closer, but a crow arrives to inspect you.
He's not sure he likes what he sees. Maybe you look like someone he knew.
He offers you a wreath of nettles and a wreath of Yew berries, which would you like?
Yew Berries - The Nettles


|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
Realm
implementations for the
various supported realm technologies for authenticating users and
identifying their associated roles.
See:
Description
| Class Summary | |
| Constants | Manifest constants for this Java package. |
| GenericPrincipal | Generic implementation of java.security.Principal that
is available for use by Realm implementations. |
| JDBCRealm | Implmentation of Realm that works with any JDBC supported database. |
| JNDIRealm | Implementation of Realm that works with a directory server accessed via the Java Naming and Directory Interface (JNDI) APIs. |
| MemoryRealm | Simple implementation of Realm that reads an XML file to configure the valid users, passwords, and roles. |
| RealmBase | Simple implementation of Realm that reads an XML file to configure the valid users, passwords, and roles. |
This package contains Realm
implementations for the
various supported realm technologies for authenticating users and
identifying their associated roles. The Realm
that is
associated with a web application's Context
(or a hierarchically
superior Container) is used to resolve authentication and role presence
questions when a web application uses container managed security as described
in the Servlet API Specification, version 2.2.
The implementations share a common base class that supports basic
functionality for all of the standard Realm
implementations,
and can be configured by setting the following properties (default values
are in square brackets):
The standard Realm
implementations that are currently
available include the following (with additional configuration properties
as specified):
Realm
that operates
from data stored in a relational database that is accessed via a JDBC
driver. The name of the driver, database connection information, and
the names of the relevant tables and columns are configured with the
following additional properties:
userNameCol
and roleNameCol
properties.
[REQUIRED - NO DEFAULT]userNameCol
and userCredCol
properties.
[REQUIRED - NO DEFAULT]Realm
that uses the
contents of a simple XML file (conf/tomcat-users.xml
) as the
list of valid users and their roles. This implementation is primarily to
demonstrate that the authentication technology functions correctly, and is
not anticipated as adequate for general purpose use. This component
supports the following additional properties:
|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |


Fayas Noushad - Donate
Bank Account
Account number
IFSC code
SWIFT code
MICR code
Branch code
Pin
Address


Milk Bar classes focus on the techniques that make our baked treats so uniquely delicious. In our cake classes we’ll show you all the steps for assembling our most popular layer cake flavor combinations (an irresistible balance of cake, spread, frosting, crumbs, and crunch!), and how we transform our cake scraps and turn them into bite sized cake truffles!
Questions? Check out our Classes FAQ.
"I took the Birthday Cake Class with my mom in NYC and had a ton of fun. It's the perfect balance of activity and education PLUS you get to eat everything throughout the class(side note: I ate a lot of frosting)."


SHANGHAI TRIAD A film review by Steve Rhodes Copyright 1995 Steve Rhodes
RATING (0 TO ****): ** 1/2
SHANGHAI TRIAD is a technical tour de force by the great Chinese director Zhang Yimou (RED SORGHUM, JU DOU, RAISE THE RED LANTERN, THE STORY OF QIU JU, and his greatest of all and the number two on my best of 1994 list, TO LIVE). Sad to say that, although SHANGHAI TRIAD is certainly worth seeing, it is one of his lessor films. Unlike TO LIVE which came alive in the characterizations, SHANGHAI TRIAD focuses its tremendous creative energy on images, nostalgia, cinematography, and music. In fact, it has so much music that one could almost classify it as a musical.
In SHANGHAI TRIAD a fourteen year old boy Shuisheng Tang (Wang Xiao Xiao) is brought from the country by his uncle Liu Tang (Li Xuejian) to work in the household of his boss (Li Baotian). His "boss" and that is what he is referred to in the movie is one of the biggest gangsters in Shanghai. He lives in an enormous house that looks remarkably like a hotel. In it he keeps his mistress, the glamorous but cruel Xiao Jinbao (Gong Li). The movie is mainly about the lifestyles of Chinese gangsters, but their warfare forms an important subplot.
In a minor role Liu Tang as Uncle Liu gives the best performance in the movie. He explains to Shuisheng his duties which include waiting outside Xiao Jinbao's bedroom door, head bowed but never falling asleep, while waiting for any request she might have. In this world highly reminiscent of the Chicago bootlegger era, the men are in command. As Uncle Liu explains the boss's philosophy it is, "Women's business is nothing but wind. Men's business, no matter how small, is important," so do not disturb the boss while he is engaged in business of any kind.
Gong Li is stunning in the film and her voice in the many musical numbers is like honey. Her character is the only one in the movie who appears to be able to control the boss. When they make small talk, being shorter he looks up to her as if she has him wrapped around her little finger. Gong Li is a great actress, but she did not give her usual energy to this picture. As a singer and as a beautiful woman, she is terrific. Her gowns by Huamiao Tong are a perfect compliment to her natural beauty as is her heavy but effective 30s style make-up (Yang Yu and Mi Zide)
Wang Xiao Xiao is excellent in his fixed expressions in showing the fright of a "country bumpkin" as Xiao Jinbao calls him. Everything in the big city scares him, not the least being the gangsters having a habit of killing each other. When Wang tries to act, he shows that he needs more acting lessons and should stick to expressions for now.
Li Baotian is effective as an evil boss. Just when you think you have him figured out, you don't.
The marvelous cinematography (Lu Yue) is full of the city filmed in a hazy dark sepia. This is contrasted with the shots of the bright glistening red sequins on Xiao Jinbao's gowns. When the long limos of that era sneak off one evening, the images are steel blue shining against the wetness of the pavement. The entire picture's filming is extremely nostalgic. Many of the moving shots are evocative of a top notch still photographer. They are so good I half expected them to be selling stills from the movie in the lobby after the show.
The music (Zhang Guangtian) is extraordinary. I loved all of the songs, but the theme music is the best part. It was played again and again using different instruments and sometimes it was hummed. It is still reverberates around in my head.
Although most of the show is a mood piece, the action in the last part finally gets believable and the tension is heightened. Here the show finally comes into its own and delivers on some of its promise. Most of the movie however is merely an exercise in style albeit one well worth watching.
SHANGHAI TRIAD runs too long at 1:49 and many scenes, especially those on the island, should have been deleted or at least abbreviated by editor Yuan Du. The movie is in Mandarin with English subtitles except for all the ending credits which for some reason are totally untranslated - good thing I have the Web to find the missing credits I need. The move is rated R for a half dozen uses of the F-word, some violence, a little sex, but no nudity. It is a fairly soft R and the movie would be fine for a teenager of any level of maturity. Although I was disappointed by the movie and expected much more, I did like it and do recommend it, and I give it ** 1/2.
**** = One of the top few films of this or any year. A must see film. *** = Excellent show. Look for it. ** = Average movie. Kind of enjoyable. * = Poor show.  Totally unbearable.
REVIEW WRITTEN ON: December 27, 1995
Opinions expressed are mine and not meant to reflect my employer's.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


GB hockey player Sam Ward loses sight in left eye
Great Britain's Sam Ward has vowed to do everything he can to resume his hockey career despite losing most of the sight in his left eye.
Ward was struck in the face by a ball during an Olympic qualifying match against Malaysia on November 3 and underwent surgery 10 days later to reconstruct his cheek.
"Over the last week I have received advice from three separate eye consultants," Ward said in a Great Britain Hockey statement.
"They have all told me that I have suffered damage to the retina of my left eye and that this damage is partly irreversible.
"I may get some sight back, but this won't be a quick process, and whether it will be sufficient for me to get back to playing international hockey only time will tell.
"It is a tough pill to swallow but, as people know, I am not one to give up easily and I will do everything I can to make myself available for selection for Tokyo."
body check tags ::


| Trees | Index | Help |
|
|---|
| Package MDSplus :: Module treenode :: Class CachedTreeNode |
|
object
--+ |Data
--+ |TreeNode
--+ | CachedTreeNode
| Method Summary | |
|---|---|
| None |
Begin a record segment |
flush(self)
| |
return cache policy for this node | |
Return data | |
Get number of segments | |
return end of segment | |
return start of segment | |
putData(self,
value)
| |
putLastRow(self,
bufsize,
array,
timestamp)
| |
| None |
Load a timestamped segment row |
| None |
Load a segment in a node |
Put timestamped segment | |
set cache policy for this node | |
Update a segment | |
| Inherited from TreeNode | |
Initialze TreeNode | |
| various |
Implements value=node.attribute |
| None |
Implements node.attribute=value |
Convert TreeNode to string. | |
| TreeNode |
Add device descendant. |
| TreeNode |
Add node |
| None |
Add a tagname to this node |
| None |
Allocate space for a timestamped segment |
| Bool |
Returns True if this node contains the same data as specified in the value argument |
| bool |
Return true if this node contains data versions |
| None |
Delete this node from the tree |
| None |
Delete data from this node |
| None |
Execute method on conglomerate element |
| TreeNode |
Return sibling of this node |
| TreeNode |
Return first child of this node. |
| TreeNodeArray |
Return TreeNodeArray of children nodes. |
| String |
Return MDSplus class name of this node |
| int |
Return compressed data length of this node |
| Int32 |
Return index of this node in a conglomerate |
| TreeNodeArray |
Return TreeNodeArray of conglomerate elements |
| Int32 |
Get depth of this node in the tree |
| TreeNodeArray |
Return TreeNodeArray of first level descendants (children and members). |
| String |
Return the name of the data type stored in this node |
| String |
Return full path of this node |
| int |
Return uncompressed data length of this node |
| str |
Return path relative to top of local tree |
| str |
Return tree containing this node |
| TreeNode |
Return first member node |
| TreeNodeArray |
Return TreeNodeArray of this nodes members |
| String |
Return shortest path string for this node |
| int |
Return node index |
| TreeNode |
Return tree node where path is relative to this node |
| String |
Return node name |
| TreeNodeArray |
Return tree nodes where path is relative to this node |
| Int32 |
Return number of children nodes. |
| int |
Return number of first level descendants (children and members) |
| Int32 |
Return number of nodes in this conglomerate |
| int |
Return number of members |
| String |
Return the original part name of node in conglomerate |
| int |
Get id/gid value of account which wrote data to this node |
| TreeNode |
Return parent of this node |
| String |
Return path of this node |
| Signal | None |
Return segment |
| Dimension |
Return dimension of segment |
| int |
Return action completion status |
| ndarray |
Return tags of this node |
| Uint64 |
Return time data was written |
| Tree |
Return Tree associated with this node |
| str |
Return usage of this node |
| bool |
Return true if this is a child node |
| bool |
Return true if node contains data which can be compressed |
| bool |
Return true if node is set to compress on put |
| bool |
Return true of compression is disabled for this node |
| bool |
Return true if successful action completion is essential |
| bool |
Return true if this subtree is to be included in pulse file |
| bool |
Return true if this is a member node |
| bool |
Return true if data storage to model is disabled for this node |
| bool |
Return true if data storage to pulse file is disabled for this node |
| bool |
Return True if node is turned on, False if not. |
| bool |
Return true if this node contains segmented records |
| bool |
Return true if data is setup information. |
| bool |
Return true if node is set write once |
| None |
Load a timestamped segment |
| None |
Move node to another location in the tree and optionally rename the node |
| None |
Remove a tagname from this node |
| None |
Rename node this node |
| None |
Restore tree context. |
| None |
Set compress on put state of this node |
| None |
Set do not compress state of this node |
| None |
Set essential state of this node |
| None |
Set include in pulse state of this node |
| None |
Set no write model state for this node |
| None |
Set no write shot state for this node |
| None |
Turn node on or off |
| None |
Enable/Disable node as a subtree |
| None |
Set Tree associated with this node |
| None |
Set the usage of a node |
| None |
Set write once state of node |
| Inherited from Data | |
| Data |
Absolute value: x.__abs__() <==> abs(x) |
| Data |
Add: x.__add__(y) <==> x+y |
| Data |
And: x.__and__(y) <==> x&y |
| Data |
Divide: x.__div__(y) <==> x/y |
| Bool |
Equals: x.__eq__(y) <==> x==y |
| Data |
Float: x.__float__() <==> float(x) |
| Data |
Floordiv: x.__floordiv__(y) <==> x//y |
| Bool |
Greater or equal: x.__ge__(y) <==> x>=y |
| Data |
Subscript: x.__getitem__(y) <==> x[y] |
| Bool |
Greater than: x.__gt__(y) <==> x>y |
| int |
Integer: x.__int__() <==> int(x) |
| Data |
Binary not: x.__invert__() <==> ~x |
| Bool |
Less than or equal: x.__le__(y) <==> x<=y |
| Data |
Length: x.__len__() <==> len(x) |
| long |
Convert this object to python long |
| Data |
Lrft binary shift: x.__lshift__(y) <==> x<<y |
| Bool |
Less than: x.__lt__(y) <==> x<y |
| Data |
Modulus: x.__mod__(y) <==> x%y |
| Data |
Multiply: x.__mul__(y) <==> x*y |
| Data |
Not equal: x.__ne__(y) <==> x!=y |
| Data |
Negation: x.__neg__() <==> -x |
| Bool |
Not equal 0: x.__nonzero__() <==> x != 0 |
| Data |
Or: x.__or__(y) <==> x|y |
| Data |
Unary plus: x.__pos__() <==> +x |
| Data |
Reverse add: x.__radd__(y) <==> y+x |
| Data |
Reverse divide: x.__rdiv__(y) <==> y/x |
| string |
Return string representation |
| Data |
x.__rfloordiv__(y) <==> y//x |
| Data |
Reverse left binary shift: x.__rlshift__(y) <==> y<<x |
| Data |
Reverse modulus: x.__rmod__(y) <==> y%x |
| Data |
Multiply: x.__mul__(y) <==> x*y |
| Data |
Or: x.__or__(y) <==> x|y |
| Data |
Reverse right binary shift: x.__rrshift__(y) <==> y>>x |
| Data |
Right binary shift: x.__rshift__(y) <==> x>>y |
| Data |
Reverse subtract: x.__rsub__(y) <==> y-x |
| Data |
Reverse xor: x.__rxor__(y) <==> y^x |
| Data |
Subtract: x.__sub__(y) <==> x-y |
| Data |
Xor: x.__xor__(y) <==> x^y |
| Bool |
Return boolean |
| Data |
Static method (routine in C++) which compiles the expression (via TdiCompile()) and returns the object instance correspondind to the compiled expression. (Static method) |
| Scalar,Array |
Return primitimive value of the data. |
| string |
Return string representation |
| Data |
Return Data from serialized buffer. (Static method) |
| Data |
Return dimension of object |
| Data |
Return the result of TDI evaluate(this). |
| Data |
Execute and expression inserting optional arguments into the expression before evaluating (Static method) |
| Int8 |
Convert this data into a byte. |
| Int8Array |
Convert this data into a byte array. |
| Data |
Return dimension of object |
| Float64 |
Convert this data into a float64. |
| Data |
Get the error field. |
| Float32 |
Convert this data into a float32. |
| Data |
Returns the result of TDI GET_HELP(this). |
| Int32 |
Convert this data into a int. |
| Int32Array |
Convert this data into a int array. |
| Int64 |
Convert this data into a long. |
| Int64Array |
Convert this data into a long array. |
| Int32Array |
Get the array dimensions as an integer array. |
| Int16 |
Convert this data into a short. |
| Int16Array |
Convert this data into a short array. |
| String |
Convert this data into a STRING. |
| Data |
Get value of tdi public variable (Static method) |
| Data |
Return the TDI evaluation of UNITS_OF(this). |
| Data |
Return MDSplus data class from value. (Static method) |
| Bool |
return true if the represented data could have been changed since the last time this method has been called. |
| Data |
Pop $value for expression evaluation |
| None |
Set $value for expression evaluation |
| Data |
Return raw part of object |
| Uint8Array |
Return Uint8Array binary representation. |
| None |
Set the Error field for this Data instance. |
| None |
Set the Help field for this Data instance. |
| Data |
Set tdi public variable with this data |
| None |
Set units |
| Float32Array |
Return sin() of data assuming data is in degrees |
| Data |
Return units part of the object |
| Data |
Return value part of object |
| Inherited from object | |
x.__delattr__('name') <==> del x.name | |
x.__getattribute__('name') <==> x.name | |
x.__hash__() <==> hash(x) | |
T.__new__(S, ...) -> a new object with type S, a subtype of T | |
helper for pickle | |
helper for pickle |
| Property Summary | |
|---|---|
| Inherited from Data | |
descriptor | |
error | |
help | |
units | |
validation |
| Instance Variable Summary | |
|---|---|
| Inherited from TreeNode | |
| int | nid : node index of this node. |
| Tree | tree : Tree instance that this node belongs to. |
| Instance Method Details |
|---|
beginSegment(self, start, end, dimension, initialValueArray, idx=-1)Begin a record segment
|
getCachePolicy(self)return cache policy for this node |
getData(self)Return data
|
getNumSegments(self)Get number of segments
|
getSegmentEnd(self, idx)return end of segment
|
getSegmentStart(self, idx)return start of segment
|
putRow(self, bufsize, array, timestamp)Load a timestamped segment row
|
putSegment(self, data, idx)Load a segment in a node
|
putTimestampedSegment(self, array, timestampArray)Put timestamped segment |
setCachePolicy(self, policy)set cache policy for this node |
updateSegment(self, start, end, dim, idx)Update a segment
|
| Trees | Index | Help |
|
|---|
| Generated by Epydoc 2.1 on Wed Aug 18 13:35:32 2010 | http://epydoc.sf.net |


Here is the contact information for our Space Center:
- Professor Name: David Keller
- Address: 555 Space Way Dr. Newark, Ca 94560
- Phone:<PHONE_NUMBER>
- Email<EMAIL_ADDRESS>We look forward to hearing from you!
Didn't find what you were looking for? Click the links below and discover more


This is my final blog post under the GSoC 2020: CC catalog series, where I will highlight and summarize my contributions to Creative Commons (CC) as part of my GSoC project. The CC Catalog project collects and stores CC licensed images scattered across the internet, such that they can be made accessible to the general public via the CC Search and CC Catalog API tools. I got the opportunity to work on different aspects of the CC Catalog repository which ultimately enhances the user experience of the CC Search and CC Catalog API tools. My primary contributions in the duration of GSoC, and the related pull requests (PR) are as follows.
Sub-provider retrieval: The first task I completed as part of my GSoC project was the retrieval of sub-providers (also known as source) such that images could be categorised under these sources, ensuring an enhanced search experience for the users. I completed the implementation of sub-provider retrieval for three providers; Flickr, Europeana, and Smithsonian. If you are interested in learning how the retrieval logic works, please check my initial blog post of this series. The PRs related to this task are as follows.
Alert updates to Smithsonian unit codes: For the Smithsonian provider, we rely on the field known as unit code to determine the sub-provider (for Smithsonian it is often a museum) each image belongs to. However, it is possible for the unit code values to change over time at the upstream, and if CC is unaware of these changes, it could hinder the successful categorisation of Smithsonian images under unique sub-provider values. I have therefore introduced a mechanism of alerting the CC code maintainers of potential changes to unit code values at the upstream. More information is provided in my second blog post of this series. The PR related to this task is #465.
Improvements to the Smithsonian provider API script: Smithsonian is an important provider which aggregates images from 19 museums. However, due to the fact that the different museums have different data models and the resultant incompatibility of the JSON responses returned from requests to the Smithsonian API, it is difficult to know which fields to rely on to obtain the information necessary for CC. This results in CC missing out on certain important information. As part of my GSoC project, I improved the completeness of creator and description information, by identifying previously unknown fields from which these details could be retrieved. Even though my improvements did not result in the identification of a comprehensive list of fields, the completeness of data was considerably improved for some Smithsonian museums compared to how it was before. For more context about this issue please refer to the ticket #397. Apart from improving information of Smithsonian data, I was also able to identify issues with certain Smithsonian API responses which did not contain mandatory information for some of the museums. We have informed the Smithsonian technical team of these issues and they are highlighted in ticket #397 as well. The PRs related to this task are as follows.
- PR #474: Improve the creator and description information of the Smithsonian source National Museum of Natural History (NMNH). This is the largest museum (source) under the Smithsonian provider.
- PR #476: Improve the creator and description information of other sources coming under the Smithsonian provider.
Expiration of outdated images: The final task I completed as part of my GSoC project was implementing a strategy for expiring outdated images in the CC database. CC has a mechanism for keeping the images they have retrieved from providers up-to-date, based on how old an image is. This is called the re-ingestion strategy, where newer images are updated more frequently compared to older images. However, this re-ingestion strategy does not detect images which have been deleted at the upstream. Thus, it is possible that some of the images stored in the CC database are obsolete, which could result in broken links being presented via the CC Search tool. As a solution, I have implemented a mechanism of identifying whether images in the CC database are obsolete by looking at the updated_on column value of the CC image table. Depending on the re-ingestion strategy per provider, we can know what the oldest updated_on value, an image can assume. If the updated_on value is older than the oldest valid value, we flag the corresponding image record as obsolete. The PR related to this task is #483.
I will continue to take the responsibility for maintaining my code in the CC Catalog repository, and I hope to continue contributing to the CC codebase. It has been a wonderful GSoC journey for me and special thanks goes to my supervisor Brent for his guidance.


class: center, middle # Data manipulation, analysis and visualisation in Python Specialist course Doctoral schools of Ghent University,
Next in June 2020 Joris Van den Bossche, Stijn Van Hoey https://github.com/jorisvandenbossche/DS-python-data-analysis --- count: false class: center, middle, bgheader background-image: url(./img/intro_system_1.png) background-size: cover --- count: false class: center, middle, bgheader background-image: url(./img/intro_system_2.png) background-size: cover --- count: false class: center, middle, bgheader background-image: url(./img/intro_system_3.png) background-size: cover --- class: center, middle index | date :-----:|:----: 2 | 19930000 8 | 1992-930 27 | 20050500 34 | 201405.01 162 | 7/9/2287 1400 | 0.0 2800 | start of the year 2015 3777 | Summer 8733 | 2013-2016 26766 | 26/09/2002 and later 1/1/2016 40788 | Nan 41277 | / 51002 | -999 51007 | -9999 --- class: center, middle ![:scale 100%](./img/datacleaning1.jpg) --- class: center, middle ![:scale 100%](./img/bike_count_illustration.png) --- class: center, middle ![:scale 100%](./img/heatmap.png) --- count: false class: center, middle, bgheader background-image: url(./img/intro_system_3.png) background-size: cover --- count: false class: center, middle, bgheader background-image: url(./img/intro_system_4.png) background-size: cover --- class: center, middle ## See you in June! ![](http://www.backwaterreptiles.com/images/pythons/angolan-python-for-sale.jpg)


Perf Report:
Test (Frame #85)
Worker Thread 0
expand all
|
collapse all
View as:
tree
|
flat
Worker Thread 1
expand all
|
collapse all
View as:
tree
|
flat
Worker Thread 2
expand all
|
collapse all
View as:
tree
|
flat
CUMULATIVE
expand all
|
collapse all
View as:
tree
|
flat


CrimPapers
Articles published on 20 January 2017
On 20 January 2017, 11 new articles were published in 8 journals.
Emotion Dysregulation As An Underlying Mechanism of Impulsive Aggression: Reviewing Empirical Data to Inform Treatments For Veterans Who Perpetrate Violence
Adult Protective Services and Victim Services: A Review of the Literature to Increase Understanding Between These Two Fields
Crimes of the Powerful: An Introduction, By Dawn I. Rothe and David Kauzlarich, New York, Routledge, 2016, 261 Pp., $128.00 (hardback), Isbn 978-1-138-79794-9 by Becky Nash
Brain Function Associated With Cooccurring Trauma and Depression Symptoms in College Students by Lauren M. Schaefer, Kate B. Nooner
Crime in Context
Political Conflict, Policing and the Challenges of Masculinity
Legal Guide For Police: Constitutional Issues by Grace A. Telesco
Crime Prevention: Approaches, Practices, and Evaluations by Russil Durrant
Police Legitimacy in Africa: A Multilevel Multinational Analysis by Francis D. Boateng
Policing Hate Crimes in Bosnia and Herzegovina by Velibor Lalić, Slađana Đurić
The Effect of School Conditions on the Use of Restorative Justice in Schools


The API key endpoints are used to view and manage API keys to grant access to the service. They respond and deal with one of the following entities:
Key entities represent API keys which have access to the service. As JSON they look like this:
{
// A unique identifier for the key, used in the X-Api-Key header
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
// When the key was generated
"generated": "2017-11-06T12:09:43.276Z",
// A short human-readable description of the key
"description": "A read key for Origami dashboards",
// The permissions that this key grants when used to authenticate
"permissions": {
"read": true,
"write": false,
"admin": false
}
}
Credentials entities represent a full set of credentials (key and secret) which have access to the service. As JSON they look like this:
{
// A unique identifier for the key, used in the X-Api-Key header
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
// The secret for the key, used in the X-Api-Secret header
"secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
}
Get a list of all available API keys for this service as an array. This endpoint
responds with an array of Key entities. This
endpoint requires the ADMIN
permission.
| Method |
GET
|
|---|---|
| Path |
/v1/keys
|
| Headers |
|
| Status |
200 on success401 if authentication failed403 if authorization failed
|
|---|---|
| Headers |
|
| Body | Array of Key entities |
curl
command:curl \
-H 'X-Api-Key: ABC123' -H 'X-Api-Secret: DEF456' \
https://origami-repo-data.ft.com/v1/keys
Get a single API key for this service by ID. This endpoint responds with a
Key entity. This endpoint requires the
ADMIN
permission.
| Method |
GET
|
|---|---|
| Path |
/v1/keys/:key-id (where :key-id is the unique identifier for a Key) |
| Headers |
|
| Status |
200 on success401 if authentication failed403 if authorization failed404 if a key matching :key-id does not exist
|
|---|---|
| Headers |
|
| Body | Key entity |
curl
command:curl \
-H 'X-Api-Key: ABC123' -H 'X-Api-Secret: XYZ456' \
https://origami-repo-data.ft.com/v1/keys/DEF137
Create a new API key which can be used to access the service. This endpoint accepts
key details and responds with a Credentials entity: the new
API key and secret. This endpoint requires the ADMIN
permission.
⚠ The API secret will only ever be output once when the key is created. After this point it is hashed and unreadable even by the service. Be sure to save the output somewhere secure, such as Vault.
| Method |
POST
|
|---|---|
| Path |
/v1/keys
|
| Headers |
|
| Body |
|
| Status |
201 on success400 if the request data is invalid or malformed401 if authentication failed403 if authorization failed
|
|---|---|
| Headers |
|
| Body | Credentials entity |
curl
command:curl -X POST \
-H 'Content-Type: application/json' -H 'X-Api-Key: ABC123' -H 'X-Api-Secret: XYZ456' \
-d '{"description": "A new API key", "read": true, "write": true, "admin": false}' \
https://origami-repo-data.ft.com/v1/keys
Delete a single API key from this service by ID. This endpoint requires the
ADMIN
permission. Additionally, you are not permitted to delete the
same API key that you are currently authenticating with.
| Method |
DELETE
|
|---|---|
| Path |
/v1/keys/:key-id (where :key-id is the unique identifier for a Key) |
| Headers |
|
| Status |
204 on success401 if authentication failed403 if authorization failed404 if a key matching :key-id does not exist
|
|---|---|
| Headers |
|
| Body | Empty |
curl
command:curl -X DELETE \
-H 'X-Api-Key: ABC123' -H 'X-Api-Secret: XYZ456' \
https://origami-repo-data.ft.com/v1/keys/DEF137