let config = { | |
"version": 1, | |
"namespace": "test", | |
"clientId": "org.aerogear.ionic.showcase", | |
"services": [ | |
{ | |
"id": "e973164c-3687-11e9-9467-0af08791569c", | |
"name": "keycloak", | |
"type": "keycloak", | |
"url": "https://keycloak-route-test.comm2.skunkhenry.com/auth", |
#!/bin/sh | |
set -x | |
TAG=$1 | |
oc patch deployment webconsole -n openshift-web-console -p "{\"spec\": {\"template\": {\"spec\": {\"containers\": [{\"name\": \"webconsole\", \"image\": \"aerogear/origin-web-console:$TAG\"}]}}}}" | |
oc get configmap broker-config -n ansible-service-broker -o yaml | sed -e "s/tag:.*/tag: \"$TAG\"/" | oc replace -n ansible-service-broker -f - |
HTTP Rest API receive 'push request', this gets processed in PushNotificationSenderEndpoint.send()
, which eventually calls an async EJB (NotificationRouter.submit()
) which performs a grouping/mapping and fires a CDI event per Variant.
This Event is received in the MessageHolderWithVariantsProducer.queueMessageVariantForProcessing()
method, which basically sticks the submitted event into a transactional JMS send, based on the variant type a different queue is selected (mainly to keep things separated). The JMS listener MessageHolderWithVariantsConsumer.onMessage()
reads from these queues, and fires a different CDI event, which kicks in the TokenLoader
.
The TokenLoader generally iterates over all variants (for a given type, see the grouping/mapping done in NotificationRouter
), and starts to query tokens from the database, as a steam.
The tokens are in different batches, with different default sizes per Push_Network, to not overflow the push network (e.g. google (non topic case) only allows 1
{ | |
"name": "dev", | |
"description": "Development role", | |
"json_class": "Chef::Role", | |
"default_attributes": { | |
"host_src_dir": "/Users/weili/work/fh/eng/", | |
"feedhenry_common": { | |
"src": "/mnt/src" | |
}, | |
"vm": { |
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
Magic words:
psql -U postgres
Some interesting flags (to see all, use -h
or --help
depending on your psql version):
-E
: will describe the underlaying queries of the\
commands (cool for learning!)-l
: psql will list all databases and then exit (useful if the user you connect with doesn't has a default database, like at AWS RDS)
// Takes string of Note + Octave | |
// Example: | |
// var frequency = getFrequency('C3'); | |
var getFrequency = function (note) { | |
var notes = ['A', 'A#', 'B', 'C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#'], | |
octave, | |
keyNumber; | |
if (note.length === 3) { |
Node.js core does its best to treat every platform equally. Even if most Node developers use OS X day to day, some use Windows, and most everyone deploys to Linux or Solaris. So it's important to keep your code portable between platforms, whether you're writing a library or an application.
Predictably, most cross-platform issues come from Windows. Things just work differently there! But if you're careful, and follow some simple best practices, your code can run just as well on Windows systems.
On Windows, paths are constructed with backslashes instead of forward slashes. So if you do your directory manipulation