@Smedley yes, our business developers and PR experts are actively reaching out to various communities for such collaboration and "DEX-partnerships"
phm8707-Aug-19 05:17 PM
I have 3 questions/topics:
1 - if a group of persons wants to add one coin (BTC clone or Dash clone), should the group ask the KMD team to add the coin ? What if the team disagree to add the coin on atomicDEX ?
2 - I heard that the whole backend would be opensource, can you tell me where the repo is ? (maybe code will be released in the future)
3 - (similar question/topic to @Camilo Lopez ) websites such as zigzag.io allows to do trading between offchain (LN) and onchain (BTC, Dash, ...), do you plan to make this happen also on atomicDEX ?
cyrelb07-Aug-19 05:18 PM
Thx!
Mylo07-Aug-19 05:19 PM
@Smedley yes, additionally - like the komodo community will learn how to become marketmakers, other coin communities will learn how to do it so they can effectively use the dex network. e.g. run the makerbot which is being developed. an answer in the linked document explains the CEX/DEX liquidity pool
CrisF07-Aug-19 05:19 PM
Hi,
Will direct private trading be possible with Atomicdex through private netids created on private nodes (not created on AtomicDEX), or will this feature only be available on the cli version?
ca33307-Aug-19 05:21 PM
@phm87
1 - are you referring to the mobile application or to an official config integration on the API (mm2) repo?
2 - yes it is available under https://github.com/komodoplatform/atomicdex-api
3 - we are actively exploring other protocols and integration possibilities to improve our DEX technology - there is a prioritisation based on the github issue tickets. I want to invite you to submit this ideas as feature requests and to open the active dev discussion around this topic. We do want to support as many technologies and protocols in atomicDEX as possible.
This is the official AtomicAPI (atomicDEX API) repository - KomodoPlatform/atomicDEX-API
@CrisF yes, this is on our "future features list"
1
1
1
CrisF07-Aug-19 05:24 PM
Thanks, that's a powerful feature.
phm8707-Aug-19 05:25 PM
@ca333
1 - the question can apply to each one I think (I though it was the same backend for both)
2 - thank you
3 - the problem here is that jl777 have some concerns about LN security (in theory he is right, in reality, it was not exploited yet I heard) and I'm not sure that there is a way to do atomic swap securely between LN and KMD (in theory, it is possible but I'm not 100% sure). One idea can be to restrict topology (as jl777 did for CHIPS) to avoid long routes with possible stealers. I'll put some infos on github
ca33307-Aug-19 05:25 PM
there are few options to achieve the "private trade" functionality. Using isolated/custom netIDs on UI side or using a pubkey whitelisting logic on the protocol side. The latter is the goal and more clean implementation.
1
acidbird07-Aug-19 05:26 PM
At the moment dex doesn’t look good from the ux/ui, design point of view + there are bugs and errors in place which are to be fixed i assume. Looking at dex now i don’t see many users using it + i am sure we will face liquidity issues (remember first dex which was used by few ppl only and was not popular at all). What is the plan? When are you planning to polish product and make it public? Will the community see marketing plan?
1
CrisF07-Aug-19 05:28 PM
At what stage in the development process would Komodo like to see interested projects join in?
ca33307-Aug-19 05:29 PM
1 - yes the backend is technically the same but the mobile application has the additional GUI layer.
Adding a new coin to the atomicDEX API repository is trivial for any external party and consists of a simple set of git PRs. This gives any compatible coin native DEX support. For the mobile application listing projects have to reach out to us since this is considered a enduser application/product and being distribution through our official software distribution channels. i.e. we have to validate things and make sure that everything is good.
3 - technically it is certainly possible to integrate it and to bridge LN<->atomicDEX. However, I do fully share James security concerns.
phm8707-Aug-19 05:31 PM
Thank you for the explanations ca333
2
ca33307-Aug-19 05:32 PM
@CrisF actually now is the right time - it is an official beta which means we still fix and optimize things. This is the stage where we are still able to modify fundamental layers in the DEX core/protocol but also on the UI/UX side and general system architecture and design. If you are around in other coin communities plz do suggest them to join this beta program and to sign up for the beta. The user feedback is the most valuable thing that devs get from a beta program.
you re very welcome @phm87
CrisF07-Aug-19 05:34 PM
Thanks, maybe @Audo could speak with you about this
Steve Lee07-Aug-19 05:34 PM
@acidbird We are currently in phase 1 of our testing. UX/UI and final feature testing and requests will be the focus of phase 3 of testing.
2
CrisF07-Aug-19 05:35 PM
I showed the beta to a wallet dev and a few others this evening. They had some very good things to say.
1
Steve Lee07-Aug-19 05:35 PM
We are currently talking to 3rd party coins, projects, and wallet providers. Referrals are welcome at any time.
CrisF07-Aug-19 05:36 PM
And maybe here too, @Audo . (edited)
acidbird07-Aug-19 05:39 PM
@Steve Lee and what about timelines? How long phase 1 will last, phase 2 and 3?
Steve Lee07-Aug-19 05:42 PM
The goal is to release for general availability once we've met all our testing targets and we have a production ready product with a strong liquidity strategy in place.
Markus07-Aug-19 05:43 PM
I like the question asked by someone about private trades, i think it could be a really nice feature for OTC deals. Like lets say u create a "private order" and get a order ID which u then send to the trade taker which then searsh for the order ID(edited)
alperC07-Aug-19 05:47 PM
Any other questions ? Last chance to get your questions in!
Markus07-Aug-19 05:48 PM
Are u looking for potential exchanges to be partnered with to implement MM2?
Seko07-Aug-19 05:49 PM
No question from me. I would like to wish Komodo much success with the DEX and say thank you. Thank you for your tireless efforts.
4
5
crumb07-Aug-19 05:50 PM
@alperC is the final AMA going to be posted to Komodo website?
1
alperC07-Aug-19 05:50 PM
@Seko thank you!
@crumb yes
crumb07-Aug-19 05:50 PM
coolio!
alperC07-Aug-19 05:50 PM
We will collect all live questions ans answers and put them in a blog post with all other Q&A's(edited)
@Markus we are always looking for new opportunities and partnerships
polycryptoblog07-Aug-19 05:53 PM
@Markus yes we are in discussions with a couple interested parties
CrisF07-Aug-19 05:54 PM
Hi @Markus , the private trade feature was in MM1. It's quite a useful feature for sure. Glad to hear it'll be back in MM2.
Markus07-Aug-19 05:55 PM
alperC07-Aug-19 05:59 PM
@everyone Thank you very much for your participation. We hope that we were able to answer your questions as much as possible. If you have any further questions, please ask them in #talk-general
Until the next AMA!


Planet Sick-Boy: http://www.sick-boy.com "We Put the SIN in Cinema"
© Copyright 2001 Planet Sick-Boy. All Rights Reserved.
The fact that Saul Rubinek's directorial debut - Jerry and Tom - wasn't seen by more people is one of the greatest travesties of the '90s, right after the break-up of The Ramones and the cancellation of My So Called Life. The hitman dramedy, adapted by Rick Cleveland (an occasional writer and producer on The West Wing) and based on his three-man play, was a competitor at the 1998 Sundance Festival, and then later that fall at Montreal and Toronto, where it played to strong reviews. Then it collected dust on a shelf at Miramax until its August 2000 video release. That's right - Jerry went straight to video.
Rubinek, an actor last seen on the screen as Nic Cage's boss in Family Man, packs his second effort - Club Land - with more of the same long, unedited shots and stunning jumps from scene to scene that made Jerry so enjoyable. Unfortunately, it's all for naught. Cleveland's intelligently written script is followed up with one penned by Steven Weber. Yes, that Steven Weber - the same vanilla no-talent who had the name of his television show changed from Cursed to The Weber Show because nobody knew he was on it.
Weber writes about as well as he acts, which dooms Club Land from the get-go. He also stars in the film, playing Stuey Walters, a Korean War vet who is forced to go into the family business - talent management. Stuey's father, Willie (Alan Alda, What Women Want), is an old-school hard-ass who constantly breaks his son's balls for not being into the management game.
When Willie's one decent money-making act quits, the Walters boys become even more outwardly hostile toward each other, while simultaneously growing closer on the inside. It's a story that should be taken out back and shot. Club Land is Broadway Danny Rose without the humor, or the heart. It wastes the talent of Alda (who looks like he's having fun, for some reason) and Happiness' Louise Lasser, while accentuating Weber's complete lack of aptitude.
The only thing remotely interesting here is going on behind the camera. Rubinek's direction and Sloane Klevin's editing (he also worked on Jerry) are the lone standouts, creating odd scene transitions using clever camera angles and mirrors. But it's still not enough to make Club Land worth watching.
1:50 - TV-14 for adult language, light sexual content and brief nudity
========== X-RAMR-ID: 28829 X-Language: en X-RT-ReviewID: 236427 X-RT-TitleID: 1101566 X-RT-SourceID: 595 X-RT-AuthorID: 1146
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


LETTER: The national debt, Donald Trump and the Fed
by Irene Leitch Bullhead CityIn response to Schyler Frost’s recent letter regarding the national debt: Mr. Frost advocates that each taxpayer simply make donations, thereby lessening the debt. This sounds good but is impossible.
Sen. Rand Paul’s father, former Rep. Ron Paul, called yearly for an audit of the Federal Reserve System which is “federal” in name only and a private corporation of banks. I think we would all be surprised with the results of an audit. The Fed has been in business for more than 100 years. Could the banks own the country?
The unconstitutional Federal Reserve System was created by Congress in 1913, along with the IRS, to service the debt, which it cannot do. That’s the deficit. Article 1, Section 8 of the Constitution gave Congress the power to create money. President Donald Trump is the first president I ever heard even complain about the Fed’s interest rate or, for that matter, say anything against the Federal Reserve.
Do the banks own the country?


Money Play. How should Red play 21?
pips Red=132 White=113
(CorrectAnswer= 0/0, ErrorScore= 0)
Red’s best game plan is to prime the rear White checker. He must take the risk of playing 9/7, 8/7 creating (once again!) a broken prime. He will then need to slot and make his 5-pt to give himself very real game-winning chances.
In fact, and perhaps surprisingly, Red wins 43% of the time from this position. With 9/7, 8/7 Red swops 8% additional gammon losses for 7.5% game winning chances – an excellent trade. 12/9 is nearly a double blunder!
In fact, and perhaps surprisingly, Red wins 43% of the time from this position. With 9/7, 8/7 Red swops 8% additional gammon losses for 7.5% game winning chances – an excellent trade. 12/9 is nearly a double blunder!
1. Cubeful 2-ply 9/7 8/7 Eq.: -0.138 0.416 0.093 0.003 - 0.584 0.199 0.008 2. Cubeful 2-ply 12/9 Eq.: -0.203 (-0.065) 0.363 0.074 0.002 - 0.637 0.127 0.002 3. Cubeful 0-ply 12/11 8/6 Eq.: -0.358 (-0.220) 0.330 0.072 0.003 - 0.670 0.199 0.008 4. Cubeful 0-ply 12/11 6/4 Eq.: -0.393 (-0.255) 0.321 0.065 0.003 - 0.679 0.205 0.007 5. Cubeful 0-ply 6/3 Eq.: -0.434 (-0.296) 0.309 0.063 0.002 - 0.691 0.214 0.008


The URL of the Elastic Search server including index
and type
- <scheme>://<host>:<port>/<index>/<type>/
The index
and type
need to be specified so that Elastic Search can index the document.
For Elastic Search 8.0 and upwards, you should set the type as _doc
because types are no longer supported.


Change e-mail
Password
New e-mail
Change e-mail
Change password
Password
New password
New password again
Change password


Type Library Revision Current Public Release (2013.2076) Keywords media, audio, video Sample code /CoronaSDK/SampleCode/Media See also audio.*
The media library provides access to the multimedia features of the device: audio, video, camera and photo library.
NOTE: The audio functions in this section have been replaced by a new OpenAL audio library that supports multiple channels and a wide range of features. It is recommended that all audio playback use this newer library.
The following audio APIs should not be used:
media.newEventSound
media.playEventSound
media.playSound
media.pauseSound
media.stopSound
media.getSoundVolume
media.setSoundVolume


Google Stadia partnering with AbleGamers to promote accessibility
by Kyle BradshawAfter an eight-month wait from its original announcement, Google Stadia is finally here for the first wave of players to enjoy. One of Google’s apparent goals with Stadia is to make gaming appealing to new groups of people who may not have gamed before. As part of that goal, a partnership has just been announced between Google Stadia and AbleGamers, a respected charity vying to make gaming more accessible.
In many ways, Google Stadia has the potential to be an extremely accessible gaming platform, as it allows a variety of places to play, including TVs, phones, and laptop/desktop computers. This accessibility is even more tangible, thanks to support for Microsoft’s Xbox Adaptive Controller, or nearly any USB HID compatible controller that suits your needs. Even the Google Stadia app’s storefront offers information about each game’s — unfortunately, sometimes limited — accessibility features.
In an effort to further boost Stadia’s accessibility going forward, Google has begun consulting with AbleGamers to, among other things, “ensure the inclusion of people with disabilities.” AbleGamers, if you’re unfamiliar, is a long-running charity devoted to making video games playable by those with disabilities of any variety.
AbleGamers founder, Mark Barlet, shared his enthusiasm for the new effort on Twitter, saying that Google Stadia’s accessibility is “further along than any new technology has ever been.”
Google has not yet shared what Stadia efforts AbleGamers will be involved in. The possibilities range from encouraging Stadia game developers to include more accessibility features to directly working with Stadia Games and Entertainment on Google’s first-party games.
If you like the work that AbleGamers is doing for Stadia and other platforms, and want to support their efforts, there are a variety of ways that you can give back.
More on Google Stadia:
- All Google Stadia Founders Edition invite codes have been sent, Premiere ships next week
- Google Stadia first impressions: It works!
- Some Chromecast Ultra units are overheating and shutting down while playing Stadia [U]
FTC: We use income earning auto affiliate links. More.


Tin Can Bay lies on the Queensland coast opposite the southern tip of Fraser Island, which is the site of the Great Sandy National Park. The port lies approximately 65nm south of Bundaberg.
The harbour at Hervey Bay, Urangan lies about 25nm north of Tin Can Bay and well known for its whale watching.
Position 25° 48.2'S, 153° 03.2'E. (entrance to Tin Can Bay inlet)
Not a Port of Entry.
There are several marinas located within the harbour at Hervey Bay.
Tin Cay Bay is tucked away at the southern end of the Great Sandy Straits and provides both a marina and sheltered anchorages.
Last updated January 2014.


Email is Required
Enter a valid email.
Password is Required
Forgot Password?
Name is Required
Mobile No is Required
Mobile Number Should be 10 digits
Minimum password should be 10 letters


Which distribution is right for me?
Cloud
Get started right away with an enterprise grade LoRaWAN solution from The Things Industries. Backed by a guaranteed uptime agreement for worry-free deployment with automatic updates forever. Your deployment scales automatically to support as many devices as you need, all managed seamlessly in the cloud from anywhere in the world.
Get The Things Stack CloudDedicated Cloud
All the benefits of Cloud, on a dedicated cluster.
See Deployment OptionsAWS Launcher
If you're familiar with the AWS ecosystem, our AWS Launcher makes it easy to deploy in one click on your new or existing EC2 cluster. Integrates effortlessly with AWS IOT, so you can keep using tools you're already familiar with.
See Deployment OptionsEnterprise
Meet data privacy concerns by bringing your own hardware. Professional support to deploy, backed by our guaranteed uptime agreement and 24/7 phone service.
See Deployment OptionsCommunity Edition
Easily test devices and use cases on our free community network.
Sign UpOpen Source
For DIY'ers, the core of {{% tts %}} is open source.


History · Log · Pageviews (All languages · Redirects) · Reasonator (Wikidata)
General statistics
Authorship
Top editors
Year counts
Month counts
(Semi-)automated edits
Assessments
General statistics [show] [hide]
| ID | 67291815 |
| Wikidata ID | Q30938181 · 5 sitelinks |
| Page size | 18,144 bytes |
| Total edits | 57 |
| Editors | 27 |
| Assessment | B |
| Pageviews (60 days) | 17,336 |
| Minor edits | 21 · (36.8%) |
| IP edits | 9 · (15.8%) |
| Bot edits | 5 · (8.8%) |
| (Semi-)automated edits | 4 |
| Reverted edits | 2 |
| First edit | 2021-04-03 18:50 • AspiringArticleWriter • 601 |
| Latest edit | 2021-11-17 15:28 • Munmula • 7 |
| Max. text added | 2021-04-03 19:56 • AspiringArticleWriter • 10,937 |
| Max. text deleted | 2021-08-24 08:34 • David Gerard • -1,311 |
| Edits | |
| Average time between edits (days) | 4 days |
| Average edits per user | 2.1 |
| Average edits per day | 0.3 |
| Average edits per month | 7.6 |
| Average edits per year | 57 |
| Edits in the past 24 hours | 1 |
| Edits in the past 7 days | 1 |
| Edits in the past 30 days | 13 |
| Edits in the past 365 days | 57 |
| Edits made by the top 10% of editors | 38 · (66.7%) |
| Links | |
| Links to this page | 21 |
| Redirects | 2 |
| Links from this page | 149 |
| External links | 55 |
| Categories | 6 |
| Files | 4 |
| Templates | 53 |
| Prose | |
| Characters | 7,171 |
| Words | 1,107 |
| Sections | 7 |
| References | 43 |
| Unique references | 28 |
Accounts
·
48 (84.2%)
IPs
·
9 (15.8%)
Major edits
·
36 (63.2%)
Minor edits
·
21 (36.8%)
Top 10%
·
38 (66.7%)
Bottom 90%
·
19 (33.3%)
Authorship
[show]
[hide]
Powered by Wikiwho
Loading...
Top editors
[show]
[hide]
Editor statistics over the history of the article.
Top 10 by edits
AspiringArticleWriter
·
10 (26.3%)
Ethurley
·
8 (21.1%)
Rauisuchian
·
4 (10.5%)
Hocus00
·
3 (7.9%)
Headbomb
·
3 (7.9%)
Bartalemini
·
2 (5.3%)
Cerebellum
·
2 (5.3%)
<IP_ADDRESS>
·
2 (5.3%)
2601:182:D17F:4D70:BC55:8017:24C2:D05A
·
2 (5.3%)
<IP_ADDRESS>
·
2 (5.3%)
Top 10 by added text
(approximate)
AspiringArticleWriter
·
11,841 (58.1%)
Ethurley
·
5,219 (25.6%)
DistributedSystems
·
1,198 (5.9%)
<IP_ADDRESS>
·
558 (2.7%)
Jebr1976a
·
421 (2.1%)
<IP_ADDRESS>
·
395 (1.9%)
Bartalemini
·
302 (1.5%)
TimSmit
·
222 (1.1%)
Citation bot
·
171 (0.8%)
Headbomb
·
60 (0.3%)
1 Average time between edits (days)
2 Added text is any positive addition that wasn't reverted
2 Added text is any positive addition that wasn't reverted
Bot list
| Rank | Bot | Links | Edits |
|---|---|---|---|
| 1 | Citation bot | Top Edits · Edit Counter | 3 |
| 2 | OAbot | Top Edits · Edit Counter | 1 |
| 3 | SdkbBot | Top Edits · Edit Counter | 1 |
All data is approximate.
Year counts [show] [hide]
All edits
Minor edits
IP edits
Size
| Year | Edits | IPs | IPs % | Minor edits | Minor edits % | Log events |
|---|---|---|---|---|---|---|
| 2021 | 57 | 9 | 15.8% | 21 | 36.8% | 2 deletions |
Month counts [show] [hide]
(Semi-)automated edits [show] [hide]
Assessments [show] [hide]
| WikiProject | Assessment | Importance |
|---|---|---|
| Computing | B | Mid |
| Cryptography | B | Low |
| Articles for creation | B | ??? |
| Cryptography/WikiProject Computer science | B | Low |
| Cryptocurrency | B | Low |
All times are in UTC.


{% include head.html %}
{% include nav.html %} {% include header.html %}
Thanks for your message, I'll be in touch shortly.
John.
{% include footer.html %} {% include js.html %}


I started this project back in 1984, believe it or not, and am doing it purely for fun.
If you like this program enough to feel like showing your appreciation, please consider
becoming a member
of the Cornell Laboratory of Ornithology.
I have no affiliation with this fine institution; rather, I've enjoyed their lectures, classes,
and worthwhile projects over the past two decades.
last updated April 26, 2006
Eric Haines,
erich@acm.org


ADOBE GURO | Work with layers
ADOBE PS TUTORIALS
Learn how to use layers in the Layers panel, resize the contents of a layer, add images to a layered file, and work with a background layer in Adobe Photoshop.
-
Understand layers
Learn what layers are and why they are so useful.
-
Learn layer basics
Change layer order, create a new layer, change layer opacity, and delete a layer.
-
Resize a layer
Change the size of the content of selected layers.
-
Add images to a layered design
Bring more images into a design, each image on its own layer.
-
Unlock the Background layer
Learn how a special Background layer works.


| Rulebase Id | Url | rule Package | Version | Status | Move to | Move to | Mode | Details |
|---|---|---|---|---|---|---|---|---|
| {{runtime.ruleBaseId}} | {{runtime.url}} | {{runtime.rulePackage}} | {{runtime.version}} | {{runtime.status}} |
| Rulebase Id | Url | rule Package | Version | Status | Move to | Move to | Mode | Details |
|---|---|---|---|---|---|---|---|---|
| {{runtime.ruleBaseId}} | {{runtime.url}} | {{runtime.rulePackage}} | {{runtime.version}} | {{runtime.status}} |
| Rulebase Id | Url | rule Package | Version | Status | Move to | Move to | Mode | Details |
|---|---|---|---|---|---|---|---|---|
| {{runtime.ruleBaseId}} | {{runtime.url}} | {{runtime.rulePackage}} | {{runtime.version}} | {{runtime.status}} |


Library
With local storage.
Add book
Title
Author
Pages
Read
Status
Delete
TitleData
AuthorData
PagesData
ReadData
Change status
Delete
Adding Books
Did you Read this book?
yes
no
Submit
Return


メイドカフェ＠ほぉ～むカフェ／@home cafe.
Mindy: I met up with Alex and Kevin in Shinjuku station where we waited for Kevin's friend from Boston, Alexa. From there the group migrated along the Chou Sobu line towards Akihabara, home of the Maid Cafes. We didn't have a particular cafe in mind for the day but it's not difficult at all finding one. The one we chose actually took up four floors in the building and a souvenir shop comprising the basement level. After heading up to the seventh floor, a staff member handed us the menue and the rules. One of the rules was no photos of the maids and another was no physical touching of the maids. After waiting a few minutes, we were seated and greated with the actual menues in English.
Evidently customers are deemed "Masters" and "Princesses" in the cafe. I ordered some much needed coffee in the form of a hot caramel latte and Alex ordered a hot mocha latte. Both of them would have the maid serving us draw on them. I had a giraffe drawn and Alex had a penguin drawn. We both ordered omu-rice (because I needed to fulfull my dream of a stereotypical maid cafe) which also had the maids draw pictures on the omlette. Alex had a bear drawn and I had a gundam drawn. Our maid was amazingly talented and did both with some awesome art skills. Didn't hurt either that it was super moe. Kevin and Alexa each ordered a "Master's Plate". Before eating and drinking we had to cast a magical spell on our drinks and food in order to put moe love into it. It was a very cute spell.
As part of our meal, we were allowed to choose either a game or a photo with a select maid. All of us opted for a photo with a maid. The process was a little bit weird as the table was presented with a cork board with photos of all the maids and their names and we were told to select which one we wanted to take a photo with. Alex chose the same one I did. When our maids were free, they called our names and we went up to the stage to take a photo with them. We got to choose a headpiece and a pose with which to take the photo. My maid was really cute.
To end off the day we walked around Akiba a bit before entering the building next to the Maid Cafe and looking through the mechandise on each floor. There was mostly anime things and figurines as well as a floor dedicated to cosplay.


Image Search is a API which provides image search and lets you view latest searches.
https://image-search-mubaidr.herokuapp.com/api/imagesearch/cat?offset=5
https://image-search-mubaidr.herokuapp.com/api/imagesearch
Please note that current DB has very few records, so you might wanna try
cat
or
fire
for testing.
Nodejs, Expressjs and monogoDB
Special thanks to:
mlab for monogoDB hosting
heroku for nodejs hosting


class APIClient
Methods
| static | factory(array $options = array()) | |
| __construct(HttpClient $client) | ||
| listConnections() | ||
| getConnection($name) | ||
| deleteConnection($name) | ||
| listChannels() | ||
| getChannel($name, Channel $channel = null) | ||
| listExchanges($vhost = null) | ||
| getExchange($vhost, $name, Exchange $exchange = null) | ||
| deleteExchange($vhost, $name) | ||
| refreshExchange(Exchange $exchange) | ||
| addExchange(Exchange $exchange) | ||
| listQueues($vhost = null) | ||
| getQueue($vhost, $name, Queue $queue = null) | ||
| refreshQueue(Queue $queue) | ||
| addQueue(Queue $queue) | ||
| deleteQueue($vhost, $name) | ||
| purgeQueue($vhost, $name) | ||
| listBindingsByQueue(Queue $queue) | ||
| listBindingsByExchangeAndQueue($vhost, $exchange, $queue) | ||
| addBinding($vhost, $exchange, $queue, Binding $binding) | ||
| deleteBinding($vhost, $exchange, $queue, Binding $binding) | ||
| listBindings($vhost = null) | ||
| alivenessTest($vhost) |


§431:3-102 Capital funds. Capital funds means the excess of the assets of an insurer over its liabilities. Capital stock, if any, shall not be deemed to be a liability for the purposes of this section. [L 1987, c 347, pt of §2]


Spotlight Project Organisers
08/03/18
Burbank, CA
ACYO is for youth ages 12 and up. It is fun, educational, and provides opportunities to serve the Armenian community in the Bay Area.
Projects Accomplished
25
03/03/18
Baltimore, MD
JVC creates intentional communities that help people broaden their perspectives and confront boundaries.
Projects Accomplished
16
14/12/17
North Ryde, NSW
Foodbank is Australia's largest food relief organisation, providing 60 million meals a year to over 2400 charities and 1000 schools around the country.
Projects Accomplished
5
Volunteer Review
11/01/18
Africa Teaching Volunteer
This volunteer opportunity has changed my perspective upon seeing the world. I feel more grateful upon my existing life.
Karma Points
565
12/02/18
Arkana Temple Renovation Project
The corporate social responsibility trips sponsored by Lonely Planet has has helped me live a more fufilling life - with a hint of simplicity and fun.
Karma Points
412


{% extends 'layout.html' %} {% block title %} Homepage {% endblock %} {% block main %}
Please upload an image of any fruit/vegetable for us to allow and detect what it is!


Components
Home
Components
Compressor
Circuit
Dampers
Screen
Ventilation
Heatpump
Cycles
Our Calculations
Front
Top
Back
Front
Top
Back


Using Lambda extensions
You can use Lambda extensions to augment your Lambda functions. For example, use Lambda
extensions to integrate
functions with your preferred monitoring, observability, security, and governance
tools. You can choose from a broad
set of tools that AWS Lambda Partners
Lambda supports external and internal extensions. An external extension runs as an independent process in the execution environment and continues to run after the function invocation is fully processed. Because extensions run as separate processes, you can write them in a different language than the function.
An internal extension runs as part of the runtime process. Your function accesses
internal extensions by using
wrapper scripts or in-process mechanisms such as JAVA_TOOL_OPTIONS
. For more information, see Modifying the runtime environment.
You can add extensions to a function using the Lambda console, the AWS Command Line Interface (AWS CLI), or infrastructure as code (IaC) services and tools such as AWS CloudFormation, AWS Serverless Application Model (AWS SAM), and Terraform.
The following Lambda runtimes support external extensions:
-
.NET Core 3.1 (C#/PowerShell) (
dotnetcore3.1
) -
Custom runtime (
provided
) -
Custom runtime on Amazon Linux 2 (
provided.al2
) -
Java 11 (Corretto) (
java11
) -
Java 8 (Corretto) (
java8.al2
) -
Node.js 14.x (
nodejs14.x
) -
Node.js 12.x (
nodejs12.x
) -
Node.js 10.x (
nodejs10.x
) -
Python 3.8 (
python3.8
) -
Python 3.7 (
python3.7
) -
Ruby 2.7 (
ruby2.7
) -
Ruby 2.5 (
ruby2.5
)
You are charged for the execution time that the extension consumes (in 1 ms increments).
For more pricing
information for extensions, see AWS Lambda Pricing
Topics
Execution environment
Lambda invokes your function in an execution environment, which provides a secure and isolated runtime environment. The execution environment manages the resources required to run your function and provides lifecycle support for the function's runtime and extensions.
The lifecycle of the execution environment includes the following phases:
-
Init
: In this phase, Lambda creates or unfreezes an execution environment with the configured resources, downloads the code for the function and all layers, initializes any extensions, initializes the runtime, and then runs the function’s initialization code (the code outside the main handler). TheInit
phase happens either during the first invocation, or in advance of function invocations if you have enabled provisioned concurrency.The
Init
phase is split into three sub-phases:Extension init
,Runtime init
, andFunction init
. These sub-phases ensure that all extensions and the runtime complete their setup tasks before the function code runs. -
Invoke
: In this phase, Lambda invokes the function handler. After the function runs to completion, Lambda prepares to handle another function invocation. -
Shutdown
: This phase is triggered if the Lambda function does not receive any invocations for a period of time. In theShutdown
phase, Lambda terminates the runtime, alerts the extensions to let them stop cleanly, and then removes the environment. Lambda sends aShutdown
event to each extension, which tells the extension that the environment is about to be shut down.
During the Init
phase, Lambda extracts layers containing extensions into the /opt
directory in the execution environment. Lambda looks for extensions in the /opt/extensions/
directory,
interprets each file as an executable bootstrap for launching the extension, and starts
all extensions in
parallel.
Impact on performance and resources
The size of your function's extensions counts towards the deployment package size limit. For a .zip file archive, the total unzipped size of the function and all extensions cannot exceed the unzipped deployment package size limit of 250 MB.
Extensions can impact the performance of your function because they share function resources such as CPU, memory, and storage. For example, if an extension performs compute-intensive operations, you may see your function's execution duration increase.
Each extension must complete its initialization before Lambda invokes the function. Therefore, an extension that consumes significant initialization time can increase the latency of the function invocation.
To measure the extra time that the extension takes after the function execution, you
can use the
PostRuntimeExecutionDuration
function metric. To measure the increase in memory used, you can use the
MaxMemoryUsed
metric. To understand the impact of a specific extension, you can run different
versions of your functions side by side.
Permissions
Extensions have access to the same resources as functions. Because extensions are executed within the same environment as the function, permissions are shared between the function and the extension.
For a .zip file archive, you can create an AWS CloudFormation template to simplify the task of attaching the same extension configuration—including AWS Identity and Access Management (IAM) permissions—to multiple functions.
Configuring extensions (.zip file archive)
You can add an extension to your function as a Lambda layer. Using layers enables you to share extensions across your organization or to the entire community of Lambda developers. You can add one or more extensions to a layer. You can register up to 10 extensions for a function.
You add the extension to your function using the same method as you would for any layer. For more information, see Configure a function to use layers.
Add an extension to your function (console)
-
Open the Functions page
on the Lambda console. -
Choose a function.
-
Under Designer, choose Layers.
-
Under Layers, choose Add a layer.
-
For Choose a layer, choose Specify an ARN.
-
For Specify an ARN, enter the Amazon Resource Name (ARN) of an extension layer.
-
Choose Add.
Using extensions in container images
You can add extensions to your container image. The ENTRYPOINT container image setting specifies the main process for the function. Configure the ENTRYPOINT setting in the Dockerfile, or as an override in the function configuration.
You can run multiple processes within a container. Lambda manages the lifecycle of the main process and any additional processes. Lambda uses the Extensions API to manage the extension lifecycle.
Example: Adding an external extension
An external extension runs in a separate process from the Lambda function. Lambda
starts a process for each
extension in the /opt/extensions/
directory. Lambda uses the Extensions API to manage the extension
lifecycle. After the function has run to completion, Lambda sends a Shutdown
event to each external
extension.
Example of adding an external extension to a Python base image
FROM public.ecr.aws/lambda/python:3.8 # Copy and install the app COPY /app /app WORKDIR /app RUN pip install -r requirements.txt # Add an extension from the local directory into /opt ADD my-extension.zip /opt CMD python ./index.py
Next steps
To learn more about extensions, we recommend the following resources:
-
For a basic working example, see Building Extensions for AWS Lambda
on the AWS Compute Blog. -
For information about extensions that AWS Lambda Partners provides, see Introducing AWS Lambda Extensions
on the AWS Compute Blog. -
To view available example extensions and wrapper scripts, see AWS Lambda Extensions
on the AWS Samples GitHub repository.


ChairLucy McPhailI'm Lucy, chair of Bodysoc and in my second year of university, studying pharmacy. I have been dancing since I was 18 months old; I couldn't imagine a life without it now! I've always enjoyed all styles of dance, and so picking a favourite is impossible! |
Competition OfficerElizabeth CallanderHey i'm Beth and i'm competition organiser this year! I'm a second year studying politics and international relations. My main dance styles which I do are ballet, contemporary and jazz but I love watching incredible hip hjop/street routines! |
||
Costumes OfficerSophie Hobbsdescription goes here |
IT & Publicity OfficerFreya Eatondescription goes here | ||
IT & Publicity OfficerNia WheelerI'm the Bodysoc IT & Publicity Officer and I'm in my third year studying Business Administration. I've danced since I was 3 and always loved it! I don't really have a favourite style because I love all of them but jazz would probably be my favourite because it can be so happy. |
SecretaryBethany JordonI've danced since I was four doing Latin, freestyle and contemporary but have done some hip hop and smallll amounts of ballet. Favourite style is definitely Latin as it's just so much fun and fast paced. Currently at bath uni studying biology but secretary and contemporary choreographer for bodysoc |
||
Show CoordinatorMegan TraversHi I'm Megan, I'm show co-ordinator on committee this year. I've been dancing since I was 3 and do a bit of everything but my favourite styles are tap and jazz! |
Social & Fundraising SecretaryDavid Williamsdescription goes here |
||
TreasurerGeorgina Mooredescription goes here |


If you are a Financisto user, on that page you can generate some charts to see how your costs were changed in recent times. You will need to create a backup file in your Financisto app, and upload somewhere where it's publicly available to enable to download it. For example you can use your Dropbox account: copy a backup file into your public folder and use it's url to generate charts. If you can't or don't want to put into a public place, you can also upload it's content by yourself. First switch to the "Copy from uncompressed backup file" tab below, then unzip the backup file and open it in a text editor then copy its content into the text area on this page.


`South Park' – Traces of Intelligence beneath Landslide of Obscenities by Homer Yen (c)1999
I've never actually the seen the Comedy Central offering about life in a ‘mountain redneck town' called South Park. But it's reputation is certainly well known as a show filled wall-to-wall with words that moms would be shocked to hear. And film always has a way of elevating the relative tameness found on TV. `South Park: Bigger, Louder and Uncut' elevates full throttle to the limit. It couldn't be any more raunchy, shameless, and obscenity-laden. Parents beware…if you're children are asking for a few dollars to go to some art film, you'd better follow them because they are on there way to see this film.
I'm only sending out this warning because the obscene language goes beyond excessive. Yet, there is a definite intelligence at work here as a vicious social satire about our ever-degenerating culture and societal norms. The creators of `South Park' probably realize that they're pushing the envelope in every scene, and are smart to work in obvious references that stuff like `South Park' can only do more harm than good although in the short term, it can be kind of funny. Witness for example the first 15 minutes where we meet up with four familiar foul-mouthed friends (Stan, Cartman, Kyle, and Kenny – well, he speaks with a muffle). They take some money from their mom under the pretense that they are going to an art film. Instead, they bribe a bum to buy tickets for them to the newly released `R' rated movie called ‘Terrence and Philip'. This film is filled with non-stop vulgarity and bathroom jokes. In the first five minutes, the `F' word is said umpteen times while Terrence and Philip commence a song and dance routine where at precise moments, various people all break wind. The various tones and lengths create a pseudo-wind concerto. I almost laughed, although I'm ashamed to admit it. The four young boys soak it all in while all of the other patrons begin to leave the theatre. The incredible thing was that at that exact same moment, the same thing happened in my theatre. People got up and left. To be able to sit through this film really requires some discipline and open-mindedness.
The kids take everything that they've learned from this film and proudly go about their elementary school repeating phrases to everyone from friends to teachers to the principal. The mothers are all aghast and take arms against Canada, the country that produced the film. Don't blame us…blame those pesky northern neighbors. The mother's lobby to execute Terence and Philip as treasonous prisoners of war while the children contemplate the consequences of their action and reflect the values that are at stake. But as with most cartoons that try to stretch from 30 to 90 minutes, a lot of it loses its razor-sharp tenacity. To compensate, there are also sub-plots about little Stan's infatuation for a fellow female schoolmate (the running joke is that every time he opens his mouth, he throws up on her face), and the coming of Satan which will occur if Terrence and Philip are executed.
`South Park' does tell its story with energy and with song. In fact, the structure is much like a traditional musical.  Most impressive was a well-orchestrated production number that ably connected all of the separate plots. Still, given the frankness of the language and the non-stop lowbrow humor and wonton destruction, I can't, with any sense of integrity, recommend this film. However, I did think that this film held together better than Wild Wild West. And in a few instances, there were flashes of wisdom and intelligence that really made me take notice (the undertones of freedom of speech and the blind reckless abandon to which overprotective mothers defend their children, for example). If you do see it, prepare to be shocked.
Grade: C
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


Members
(inner, constant) addOne :function
Curried function of addNum where first param is set as 1.
Type:
- function
- Source:
(inner, constant) buttonDisabled :function
Curried function of buttonActivity with opacity and disabled paramters set
to disable a button.
Type:
- function
- Source:
- See:
-
- buttonActivity
(inner, constant) buttonEnabled :function
Curried function of buttonActivity with opacity and disabled paramters set
to enable a button.
Type:
- function
- Source:
- See:
-
- buttonActivity
(inner, constant) disableTweet :function
Curried function of tweetStatus with textareaStatus and buttonStatus set
to disable posting a Tweet.
Type:
- function
- Source:
- See:
-
- tweetStatus
(inner, constant) enableTweet :function
Curried function of tweetStatus with textareaStatus and buttonStatus set
to enable posting a Tweet.
Type:
- function
- Source:
- See:
-
- tweetStatus
(inner, constant) followFriend :function
Curried function of friendStatus where url and text params are set
to follow a friend.
Type:
- function
- Source:
- See:
-
- friendStatus
(inner, constant) formTweetHandler
Submit event handler when a tweet is sent from the UI. Sends a POST
request to the server. If it is successful, a Tweet object is sent back
which is used to display on the UI. If it fails, a modal Object is created
with a display of the error.
- Source:
(inner, constant) likeSVG :string
string used to create like SVG image.
Type:
- string
- Source:
(inner, constant) maxLength :number
Represents maximum number of characters in a string that can be used
for a valid Tweet.
Type:
- number
- Source:
(inner, constant) postReset :function
Curried function of postActivity where its str and count params are
set to reset the posting tweet UI.
Type:
- function
- Source:
- See:
-
- postActivity
(inner, constant) replySVG :string
string used to create reply SVG image.
Type:
- string
- Source:
(inner, constant) retweetSVG :string
string used to create retweet SVG image.
Type:
- string
- Source:
(inner, constant) subtractOne :function
Curried function of subtractNum where first param is set as 1.
Type:
- function
- Source:
(inner, constant) textareaTweetHandler
Keyup event handler for posting a tweet on the textarea. Checks the
character count of the text. If it is in acceptable range, the
post tweet button is still enabled and background color of the count
is left alone. If it is not in range, the post button is disabled and
the background color of count is changed to indicate that the text is
over the limit.
- Source:
(inner, constant) unfollowFriend :function
Curried function of friendStatus where url and text params are set
to unfollow a friend.
Type:
- function
- Source:
- See:
-
- friendStatus
Methods
(inner) addEventListener(type, listener, elm) → {undefined}
Sets up a function to be called whenever the specified event is delivered to the target.
Parameters:
| Name | Type | Description |
|---|---|---|
type |
string | String representing the event type to listen for |
listener |
callback | Callback to be called when event is triggered |
elm |
DOM | DOM element to attach event on |
- Source:
Returns:
- Type
- undefined
(inner) addNum(num1, num2) → {numer}
Adds 2 numbers together.
Parameters:
| Name | Type | Description |
|---|---|---|
num1 |
number | |
num2 |
number |
- Source:
Returns:
- Type
- numer
(inner) always() → {*}
A function that always returns the first argument received.
Parameters:
| Type | Description |
|---|---|
| * | |
| * |
- Source:
Returns:
Returns first arguent
- Type
- *
(inner) appendChild(parent, child) → {DOM}
Runs appendChild method of a DOM elemyyent.
Parameters:
| Name | Type | Description |
|---|---|---|
parent |
DOM | Parent element |
child |
DOM | Child element |
- Source:
Returns:
- Returns the child param element.
- Type
- DOM
(inner) buttonActivity(opacity, disabled, button) → {DOM}
Used to change a DOM button's opacity and to enable/disable it.
Parameters:
| Name | Type | Description |
|---|---|---|
opacity |
string | Infulences opacity of button |
disabled |
boolean | true to enable button, false to disable it |
button |
DOM | DOM element of a button |
- Source:
Returns:
Button DOM element
- Type
- DOM
(inner) changeFollowerStyle(text, elm) → {DOM}
Toggles a DOM elements class and changes its textContent prop with a new
value. Used to change followers 'Follow' or 'Unfollow' status in the UI.
Parameters:
| Name | Type | Description |
|---|---|---|
text |
string | The value to change textContent prop |
elm |
DOM | The DOM Object to change its class and textContent properties |
- Source:
Returns:
- Type
- DOM
(inner) changeNumberOfFriends(count, addOrSubtract) → {undefined}
Changes friends count in the UI.
Parameters:
| Name | Type | Description |
|---|---|---|
count |
DOM | The element that has a number on it |
addOrSubtract |
callback | A callback that either adds or subtracts the count elements number |
- Source:
Returns:
- Type
- undefined
(inner) checkResponse(res) → {Object}
Checks if response Object from fetch api is okay (200-299). If it is okay,
return the response object, if not then throw it.
Parameters:
| Name | Type | Description |
|---|---|---|
res |
Object | Response Object |
- Source:
Throws:
-
The res parameter
- Type
- Object
Returns:
The res parameter
- Type
- Object
(inner) closeModal(e) → {undefined}
Event listener function used to destroy the modal DOM object and to
enable the textarea and button for posting a tweet.
Parameters:
| Name | Type | Description |
|---|---|---|
e |
Object | Event Object |
- Source:
Returns:
- Type
- undefined
(inner) createModalError(Error) → {DOM}
Creates the modal DOM element when an error occurs.
Parameters:
| Name | Type | Description | ||||||
|---|---|---|---|---|---|---|---|---|
Error |
Object |
Properties
|
- Source:
Returns:
DOM element with an error message
- Type
- DOM
(inner) failedPost(res) → {Promise}
When a failed response is sent back from the server, the failed response is sent
here. It alerts the user by creating a modal and display a error message to the
UI.
Parameters:
| Name | Type | Description |
|---|---|---|
res |
Object | Response Object from fetch API |
- Source:
Returns:
- Type
- Promise
(inner) friendStatus(url, text, addOrSubtract, e) → {undefined}
Event listener function used to change a friendship status on the
UI. Also, send a POST request to the server to apply a change to
a friends status (follow or unfollow). This will happen when they click
the status on the UI.
Parameters:
| Name | Type | Description |
|---|---|---|
url |
string | Containing the direct URL of the resource |
text |
string | The text used to change the friendship status on the UI |
addOrSubtract |
callback | Callback used to change friend number count |
e |
Object | Event Object |
- Source:
Returns:
- Type
- undefined
(inner) insertAdjacentHTML(elm, position, text) → {undefined}
Parses the specified text as HTML into the DOM tree at a specified position.
Parameters:
| Name | Type | Description |
|---|---|---|
elm |
DOM | Element |
position |
string | Representing the position relative to the element |
text |
string | String to be parsed as HTML and inserted into the tree |
- Source:
Returns:
- Type
- undefined
(inner) postActivity(str, count, textareaElm, countElm) → {undefined}
Changes a textarea's DOM element value and another DOM elements textArea's
values.
Parameters:
| Name | Type | Description |
|---|---|---|
str |
string | Value to change textarea's value prop |
count |
string | Value to change a DOM elements textArea value |
textareaElm |
DOM | DOM textarea element |
countElm |
DOM | DOM Object |
- Source:
Returns:
- Type
- undefined
(inner) querySelector(query, elm) → {DOM|null}
Runs querySelector method of a DOM elemyyent.
Parameters:
| Name | Type | Description |
|---|---|---|
query |
string | Query used to find DOM element |
elm |
DOM | The element to call querySelector method |
- Source:
Returns:
- Type
- DOM | null
(inner) removeEventListener() → {undefined}
Removes event from a DOM element.
Parameters:
| Type | Description |
|---|---|
| string | Specifies the type of event for which to remove an event listener |
| listener | The callback of the event handler to remove from the event target |
| DOM | DOM element to remove event |
- Source:
Returns:
- Type
- undefined
(inner) respJSON(res) → {Object}
A funtion that takes a response Object and runs its json method.
Parameters:
| Name | Type | Description |
|---|---|---|
res |
Object | Response object from fetch API |
- Source:
Returns:
Returns JSON Object
- Type
- Object
(inner) reThrow(fn, arg)
Runs a function with an argument and then throws it.
Parameters:
| Name | Type | Description |
|---|---|---|
fn |
function | Callback to be called |
arg |
* | The argument to be used with parameter fn |
- Source:
Throws:
-
throws result of fn(arg)
- Type
- *
(inner) style(elm, prop, value) → {string}
Styles an element DOM object.
Parameters:
| Name | Type | Description |
|---|---|---|
elm |
DOM | DOM element |
prop |
string | The property to style |
value |
string | The value to input on the propety of the style object |
- Source:
Returns:
Returns the value param
- Type
- string
(inner) subtractNum(num1, num2) → {number}
Subtracts 2 numbers.
Parameters:
| Name | Type | Description |
|---|---|---|
num1 |
number | The number subtracted |
num2 |
number | The number subtracted from |
- Source:
Returns:
- Type
- number
(inner) SVG(className, name, svg, num) → {string}
Wraps a SVG string into a class and returns back as a string.
Parameters:
| Name | Type | Description |
|---|---|---|
className |
string | |
name |
string | Name relating to the SVG image |
svg |
string | |
num |
number | undefined | Number relating to number of likes or number of retweets, if it exits |
- Source:
Returns:
HTML string of anchor DOM element.
- Type
- string
(inner) tweetItemHTML(tweet) → {string}
Creates a tweet HTML string.
Parameters:
| Name | Type | Description |
|---|---|---|
tweet |
Tweet | Used to populate the HTML string |
- Source:
Returns:
HTML string representing a Tweet
- Type
- string
(inner) tweetStatus(textareaStatus, buttonStatus, textarea, button) → {undefined}
Disables/enables a textarea DOM Object and runs a callback
to enable/diable a button DOM object.
Parameters:
| Name | Type | Description |
|---|---|---|
textareaStatus |
boolean | |
buttonStatus |
function | Callback used on button |
textarea |
DOM | |
button |
DOM |
- Source:
- See:
-
- buttonEnabled
- buttonDisabled
Returns:
- Type
- undefined
Type Definitions
DOM
A DOM element.
Type:
- Object
- Source:
Tweet
Tweet Object which represents Twitters tweets.
Type:
- Object


Implemented virtual machine introspection in C language over QEMU hypervisor to introspect guest virtual machine running on Linux OS. Using this introspection technique our application was successfully able to detect hidden process deployed using a rootkit. Our application for introspecting Windows guest OS was implemented on the logic of detection of Direct Kernel Object Manipulation (DKOM) based rootkit attacks. To successfully detect hidden process on Unix based OS, we implemented detection of syscall hooks. Our application is able to introspect Windows XP, Windows 7, Ubuntu 14.04 and Fedora OS for intrusions like rootkits or malwares.
Developed SQLInjection Firewall for php based web applications. The logic behind this implementation was to proxy every sql query made to the database via a firewall so that malicious sql queries can be filtered before they get executed in the database. Our solution is also able to through specific exceptions denoting the attempt of an attacker to inject into a SQL database using conditions like always true. Prevented from 2nd Order SQL injections attacks as well. All the queries getting executed on SQL database are proxy through the firewall, hence we were able to defend against 2nd Order SQL injection attacks as well.


{% extends "base.html" %} {% block content %}
Please enter the email address on your account to have a password reset link sent to you.


1) Supported file formats are jpg/gif/jpeg/png.
2) File size should be less than 10MB.
3) Please DO NOT upload obscene/copyrighted/celebrity images.


Static Test
The following static files render on this page:
{% for name, asset in statics.assets.items() %}{{name}}
-
{% for f in asset.files %}
- [ {{f.type}} ] {{f.rel_path}} {% endfor %}
Try to run another environment: python run.py production or python run.py development
Don't forget run python collectstatic.py production before production env test


About Raymond
I am currently a senior at Rutgers University. One of my hobbies include watching basketball. I have been an avid fan of basketball for many years! I try to follow up on the latest news by following multiple accounts on social media, listening to podcasts, talkshows, or watching highlights and games.


Tastytools is a set for usefull tools to develop a quality tastypie webservice API.
It’s main features are automatic documentation and the generation of Hygiene tests (tests that ensure the pressence of certain features that that do not give positive satisfaction, though dissatisfaction results from their absence). For example it tests the pressence of help fields An example in the case of an API, is a help text on the fields
Assuming you have a tastypie api and have already read the tastypie docs:
Add tastytools to INSTALLED_APPS.
Create an file in <my_app>/api/tools.py, and place the following in it:
from tastytools.api import Api
from <my_app>.api.resources import MyModelResource
from <my_app>.api.resources import AnoterResource, YetAnotherResource
api = Api()
api.register(MyModelResource)
api.register(resources=[AnotherResource, YetAnotherResource])
In your root URLconf, add the following code (around where the tastypie code might be):
from tastypie.api import Api
from my_app.api.resources import MyModelResource
api_name = 'v1'
v1_api = Api(api_name=api_name)
v1_api.register(MyModelResource())
urlpatterns = patterns('',
# ...more URLconf bits here...
# Then add:
(r'^tastytools/', include('tastytools.urls'), {'api_name': api_name}),
)
As you can see, now you have documentation for anyone who wants to consume your api resources!
Tastytools requires Tastypie to work. If you use Pip, you can install the necessary bits via the included requirements.txt:


A minimalistic, proof of concept, weather app using mvc without a framework, pure css animations that change based on the weather and day time. By default the app shows the weather on user location.
Try plaing around with it.


public final class HttpHeaderNames
extends java.lang.Object
| Constructor and Description |
|---|
HttpHeaderNames() |
| Modifier and Type | Method and Description |
|---|---|
static HeaderName |
get(java.lang.String name)
Looks up the name in the cache, and if does not exist, then creates and adds a new one
(up to the max cache size).
|
public static final HeaderName COOKIE
public static final HeaderName SET_COOKIE
public static final HeaderName DATE
public static final HeaderName CONNECTION
public static final HeaderName KEEP_ALIVE
public static final HeaderName HOST
public static final HeaderName SERVER
public static final HeaderName VIA
public static final HeaderName USER_AGENT
public static final HeaderName REFERER
public static final HeaderName ORIGIN
public static final HeaderName LOCATION
public static final HeaderName UPGRADE
public static final HeaderName CONTENT_TYPE
public static final HeaderName CONTENT_LENGTH
public static final HeaderName CONTENT_ENCODING
public static final HeaderName ACCEPT
public static final HeaderName ACCEPT_ENCODING
public static final HeaderName ACCEPT_LANGUAGE
public static final HeaderName TRANSFER_ENCODING
public static final HeaderName TE
public static final HeaderName RANGE
public static final HeaderName ACCEPT_RANGES
public static final HeaderName ALLOW
public static final HeaderName VARY
public static final HeaderName LAST_MODIFIED
public static final HeaderName ETAG
public static final HeaderName EXPIRES
public static final HeaderName CACHE_CONTROL
public static final HeaderName EDGE_CONTROL
public static final HeaderName PRAGMA
public static final HeaderName X_FORWARDED_HOST
public static final HeaderName X_FORWARDED_FOR
public static final HeaderName X_FORWARDED_PORT
public static final HeaderName X_FORWARDED_PROTO
public static final HeaderName X_FORWARDED_PROTO_VERSION
public static final HeaderName ACCESS_CONTROL_ALLOW_ORIGIN
public static final HeaderName ACCESS_CONTROL_ALLOW_CREDENTIALS
public static final HeaderName ACCESS_CONTROL_ALLOW_HEADERS
public static final HeaderName ACCESS_CONTROL_ALLOW_METHODS
public static final HeaderName ACCESS_CONTROL_REQUEST_HEADERS
public static final HeaderName ACCESS_CONTROL_EXPOSE_HEADERS
public static final HeaderName ACCESS_CONTROL_MAX_AGE_HEADERS
public static final HeaderName STRICT_TRANSPORT_SECURITY
public static final HeaderName LINK
public static HeaderName get(java.lang.String name)
name
-


Global NL
Home
(current)
Podcast
(current)
About Us
(current)
Member Directory
(current)
Member Map
Sign in
Sign in
to continue to the Global NL Members Portal
Global NL uses LinkedIn to provide a secure
experience for our commmunity of members
Search members by name
Search
Clear Search
Search members by company
Find members by their current company
Search
Clear Search
Search members by industry
Accommodation and Food Services
Administrative and Support
Agriculture and Forestry
Arts, Entertainment and Recreation
Construction
Education
Finance and Insurance
Fisheries and Aquaculture
Health Care and Social Assistance
Manufacturing
Mining and Quarrying
Oil & Gas
Professional, Scientific and Technical Services
Public Administration
Real Estate and Rental and Leasing
Retail
Technology
Transportation and Warehousing
Utilities
Waste Management and Remediation Services
Wholesale Trade
Other
Search
Clear Search
Search members by current location
Find members by their current Town, City, Province, State or Country
Search
Clear Search
Search members by NL roots
Find other members from or with a connection to the same town in NL
Search
Clear Search
Send a message
×
×
Sign in
to send messages to the Global NL Members
Global NL uses LinkedIn to provide a secure
experience for our commmunity of members
Close


Japan's 'bark worse than its bite' in trade spat with South Korea, Citigroup says
Japan’s tightening of export controls on South Korea have so far been a case of “the bark was worse than the bite,” with only limited fallout for South Korea’s economy, according to Citigroup Inc.
Japan’s tighter scrutiny of exports of three key materials used in the chip industry and Tokyo’s removal of its neighbor from a list of trusted trading partners have had little impact on South Korea’s imports of industrial and capital goods, Citigroup economists Marie Kim and Jeeho Yoon wrote in a report Friday.
The moves have, however, spurred South Korean efforts to reduce economic reliance on Japan, the analysts wrote.
“Ironically, we feel that this tension rather brought in positive implication to the Korean economy, albeit small,” the economists wrote.
Since Japan began applying trade pressure, South Korea’s government has encouraged domestic production of key manufacturing items and boosted spending on research and development in the 2020 budget, according to the report.
Meanwhile, boycotts in South Korea have led to a plunge in sales of Japanese consumer goods and a decrease in tourists to Japan, who may have decided to travel domestically instead, according to Citi.
The spat is rooted in a dispute over Japan’s colonial past. Tension escalated in July when Japan tightened export controls on chemicals used by South Korean companies to make chips and displays. Tokyo then removed South Korea from its list of trusted trading partners. South Korea responded by stripping Japan from its own list and announcing a planned withdrawal from an intelligence-sharing pact.
Last month, South Korean exports to Japan fell 14 percent, while imports from Japan slid 23 percent. South Korea’s trade ministry attributed the declines to industrial factors rather than trade actions.
“Japan could toughen the export regulation at any time and this ‘limbo’ situation could last for a while without a concrete resolution,” Citi’s economists wrote.
GET THE BEST OF THE JAPAN TIMES
IN FIVE EASY PIECES WITH TAKE 5
JOIN THE CONVERSATION


Hogwarts House Sorting Quiz
I know what you're all thinking, "Not -another- sorting quiz!", but before you get bored and leave, let me say a few things about it.
This is not the ordinary sorting quiz that you're used to. Unlike all those other quizzes infesting the Internet, this quiz actually sorts you for who
you are as a person, not because your favorite animal is a lion.
I made this quiz as a reaction to all the bad sorting quizzes. The problem with most of the existing quizzes, is that the questions
rarely have anything to do with which house you would actually be sorted into. Your favorite color doesn't effect which house you belong to. Not every
Gryffindor likes defense against the dark arts, not every Slytherin likes potions. Just look at Harry, Ron, and Hermione. Each is in Gryffindor, but
each has a completely different disposition. Harry's father was often a bully and a thief, yet he was still in Gryffindor.
This quiz will actually ask you psychological questions with a variety of answers that can't easily be determined as to which house
they fit into. This was meant to be more like what the Sorting Hat does. Just remember though that you must answer these questions truthfully in order
to get an accurate answer.
Also these questions are written to take place in our world, not the world of Harry Potter. I didn't give a Harry Potter theme to the
quiz because the answers are more accurate this way. As Muggles, we don't have any idea what it's like to be faced with a troll or a bogart and we've
never played quiddich. Our answers may be skewed as to how our favorite characters would act instead of ourselves. However, we all know what it's like
to live in the Muggle world because we do it every day.
So anyway, without further ado.
|


Name: {{ active.name }}
Head: {{active.head.brand}} {{active.head.range}}
Neck: {{active.neck.brand}} {{active.neck.range}}
Body: {{active.body.brand}} {{active.body.range}}


/*====================================================================* * * Copyright (c) 2013 Qualcomm Atheros, Inc. * * All rights reserved. * * Redistribution and use in source and binary forms, with or * without modification, are permitted (subject to the limitations * in the disclaimer below) provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * * Neither the name of Qualcomm Atheros nor the names of * its contributors may be used to endorse or promote products * derived from this software without specific prior written * permission. * * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE * GRANTED BY THIS LICENSE.  IN NO EVENT SHALL THE COPYRIGHT OWNER * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *--------------------------------------------------------------------*/ /*====================================================================* * * config2cfg.c - convert a .config file to a .cfg file; * * Contributor(s): * Charles Maier<EMAIL_ADDRESS>* *--------------------------------------------------------------------*/ #define _GETOPT_H /*====================================================================* * system header files; *--------------------------------------------------------------------*/ #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> /*====================================================================* * custom header files; *--------------------------------------------------------------------*/ #include "../tools/getoptv.h" #include "../tools/putoptv.h" #include "../tools/version.h" #include "../tools/number.h" #include "../tools/flags.h" #include "../tools/memory.h" #include "../tools/files.h" #include "../tools/error.h" #include "../ram/sdram.h" /*====================================================================* * custom source files; *--------------------------------------------------------------------*/ #ifndef MAKEFILE #include "../tools/getoptv.c" #include "../tools/putoptv.c" #include "../tools/version.c" #include "../tools/error.c" #include "../tools/checksum32.c" #include "../tools/todigit.c" #include "../tools/hexencode.c" #endif /*====================================================================* * *--------------------------------------------------------------------*/ int main (int argc, char const * argv []) { static char const * optv [] = { "qv", "file [file] [...]", "convert ASCII SDRAM configuration files (DM) to binary (toolkit) format", "q\tquiet mode", "v\tverbose mode", (char const *) (0) }; struct config_ram config_ram; char string [(sizeof (config_ram) << 1) + 1]; uint32_t checksum; flag_t flags = (flag_t)(0); signed state = 1; signed fd; signed c; optind = 1; while ((c = getoptv (argc, argv, optv)) != -1) { switch ((char) (c)) { case 'q': _setbits (flags, SDRAM_SILENCE); break; case 'v': _setbits (flags, SDRAM_VERBOSE); break; default: break; } } argc -= optind; argv += optind; while ((argc-- > 0) && (* argv != (char const *)(0))) { #if 0 char const * pathname; char const * filename; char const * extender; for (pathname = filename = * argv; *pathname; pathname++) { if ((*pathname == '/') || (*pathname == '\\')) { filename = pathname + 1; } } for (pathname = extender = filename; *pathname; pathname++) { if (*pathname == '.') { extender = pathname; } } if (extender == filename) { extender = pathname; } #endif if ((fd = open (* argv, O_BINARY|O_RDONLY)) == -1) { error (0, errno, "can't open %s for input", * argv); state = 1; } else if (read (fd, &string, sizeof (string)) < (ssize_t) (sizeof (string) - 1)) { error (0, errno, "can't read %s", * argv); state = 1; } else { close (fd); if (hexencode ((uint8_t *) (&config_ram), sizeof (config_ram), string) == sizeof (config_ram)) { error (1, errno, "%s is suspect", * argv); } checksum = checksum32 (&config_ram, sizeof (config_ram), 0); if ((fd = open (* argv, O_BINARY|O_CREAT|O_RDWR|O_TRUNC, FILE_FILEMODE)) == -1) { error (1, errno, "can't open %s for output", * argv); } write (fd, &config_ram, sizeof (config_ram)); write (fd, &checksum, sizeof (checksum)); } close (fd); argv++; } return (state); }


[LAZY script v2.1.3](https://github.com/arismelachroinos/lscript) | The LAZY script will make your life easier, and of course faster.
[PenTesters Framework](https://github.com/trustedsec/ptf) | PenTesters framework is a python script designed to create a similar and familiar distribution for pen testing. Attempts to install all of your pen testing tools, compile, build, etc.
LeeBaird Discover Script
https://github.com/Cn33liz/p0wnedShell | post exploit toolkit
https://github.com/fdiskyou/PowerOPS https://web.archive.org/web/20171119190252/labs.portcullis.co.uk/blog/powerops-powershell-for-offensive-operations/ | powershell runspace portable post exploit tool
C2 Frameworks:
Hwacha
FuzzyBunch
Empire
Merlin
Metasploit
Pwndsh
SilentTrinity


public interface Cube extends OlapElement, Annotated
OlapElement.LocalizedProperty
| Modifier and Type | Method and Description |
|---|---|
Member |
createCalculatedMember(String xml)
Creates a calculated member in this cube.
|
Dimension[] |
getDimensions()
Returns the dimensions of this cube.
|
Member[] |
getMembersForQuery(String query,
List<Member> calcMembers)
Returns Member[].
|
Level |
getMonthLevel()
Return Month Level or null.
|
String |
getName() |
NamedSet[] |
getNamedSets()
Returns the named sets of this cube.
|
Level |
getQuarterLevel()
Return Quarter Level or null.
|
Schema |
getSchema() |
SchemaReader |
getSchemaReader(Role role)
Returns a
SchemaReader for which this cube is the context for
lookup up members. |
Level |
getWeekLevel()
Return Week Level or null.
|
Level |
getYearLevel()
Helper method that returns the Year Level or returns null if the Time
Dimension does not exist or if Year is not defined in the Time Dimension.
|
Hierarchy |
lookupHierarchy(Id.NameSegment s,
boolean unique)
Finds a hierarchy whose name (or unique name, if
unique is
true) equals s . |
Set<Dimension> |
nonJoiningDimensions(Member[] tuple)
Finds out non joining dimensions for this cube.
|
Set<Dimension> |
nonJoiningDimensions(Set<Dimension> otherDims)
Finds out non joining dimensions for this cube.
|
getCaption, getDescription, getDimension, getHierarchy, getLocalized, getQualifiedName, getUniqueName, isVisible, lookupChild
getAnnotationMap
String getName()
getName
in interface OlapElement
Schema getSchema()
Dimension[] getDimensions()
NamedSet[] getNamedSets()
Hierarchy lookupHierarchy(Id.NameSegment s, boolean unique)
unique
is
true) equals s
.Member[] getMembersForQuery(String query, List<Member> calcMembers)
query
has to be in the
format of something like "[with calculated members] select *members* on
columns from this
".Level getYearLevel()
Level getQuarterLevel()
Level getMonthLevel()
Level getWeekLevel()
SchemaReader getSchemaReader(Role role)
SchemaReader
for which this cube is the context for
lookup up members.
If role
is null, the returned schema reader also obeys the
access-control profile of role.Member createCalculatedMember(String xml)
The XML string must be a <CalculatedMember/>
element, as defined in Mondrian.xml
.
xml
- XML stringSet<Dimension> nonJoiningDimensions(Member[] tuple)
tuple
- array of members


|
|
$11.99
Playable on PS4 File Size: 7.1GB |
The Victory Adventure Bundle Hi-Rez Studios Bundle | Released Dec 31, 2020 Description Capture the Flag in Nike's Valley of Victory, an all-new, limited-time, 5v5 game mode in SMITE! You'll experience Capture the Flag as only the Gods can play it in our first Adventure. The Victory Adventure Bundle includes: The Limited Conqueror Nike Skin A Gold Key, to unlock your choice of Limited skins in the Gold Vault The Victory Global Emote, which upgrades as you play The Valley of Victory Music Theme 15 Team Worshiper Boosters |
|
© Alchemy Rod Developed and Designed by Joeylene Rivera |


Carousel component is a new component to build responsive carousels. It contains a collection of Images
,
like all other components exposed by this library and many other config objects.
It displays images as a carousel, so a big image (either full or limited width) with right and left arrows and it shows images every a fixed amount of time.
Optionally, it can display previews above/below the main image. A live example of this component is available on the homepage of this website.
Obviously, there are additional configurable features, like aria, keyboard navigation, sizes and so on.
A very cool feature, it the integration with ModalGallery. In fact, you can configure the carousel to open the current image in a modal way,
using ModalGalleryComponent
.
If you need to support also Internet Explorer 11 (IE11), enable legacyIE11Mode: true
and use only
ABSOLUTE image paths (for instance '/assets/a.png' instead of './assets/a.png'). However, try to understand that I cannot support that obsolete browser forever!
| Template (HTML) selector | ks-carousel |
| Exported as | ksCarousel |
id |
Type:
number
A mandatory unique id >= 0 of the current carousel.
Despite CarouselComponent doesn't use this value, it must be unique because a carousel can open a modal image
using
GalleryService .
|
images |
Type:
Image[]
The mandatory array of Carousel uses the image path assigned to the modal property in Image class. This is for historical reason and to provide a better integration with modal-gallery. Please, don't use If you need IE11 support, always use ABSOLUTE image paths (for instance '/assets/a.png' instead of './assets/a.png'). |
carouselConfig
|
Type:
CarouselConfig optional
Interface to configure the carousel, like to change sizes, hide some features and so on. For more information, please see the CarouselConfig's section |
playConfig
|
Type:
PlayConfig optional
Interface to change the behaviour of auto-navigation, like autoPlay and interval in milliseconds. For more information, please see the PlayConfig's section |
carouselImageConfig
|
Type:
CarouselImageConfig optional
Interface to change current image of the carousel, like description or to invert the swipe direction. For more information, please see the CarouselImageConfig's section |
dotsConfig
|
Type:
DotsConfig optional
Interface to configure dots. For more information, please see the |
previewConfig
|
Type:
CarouselPreviewConfig optional
Interface to configure previews, for instance to choose either the number, visibility, arrows, sizes. If you want to know how to use this object, please check PreviewsComponent. |
infinite
|
Type:
boolean optional
|
accessibilityConfig
|
Type:
AccessibilityConfig optional
Interface to customize accessibility features, like alt, titles, aria-labels and so on. CarouselComponent applies a default value with english texts.
This default config object is exported as |
show |
An It contains an Everytime the current image changes, a new
|
firstImage |
An It contains an
|
lastImage |
An It contains an
|
Interface to configure the carousel, like to change sizes, hide some features and so on.
maxWidth |
Type:
string
Maximum width of the carousel. It's used to set the CSS property maxWidth. '100%' (full width) by default. |
maxHeight |
Type:
string
Maximum height of the carousel. It's used to set the CSS property maxHeight. '400px%' by default. |
showArrows |
Type:
boolean
boolean to disable both left and right arrows. true by default. |
objectFit |
Type:
string
CSS objectFit property. For more information check Mozilla MDN web doc. 'cover' by default. |
keyboardEnable |
Type:
boolean
boolean to disable keyboard navigation. true by default. |
modalGalleryEnable |
Type:
boolean
boolean to enable clicks on the current image to open modal gallery. false by default. |
legacyIE11Mode |
Type:
boolean
boolean to enable legacy support for Internet Explorer 11 (IE11), otherwise the carousel won't work properly. false by default. |
Interface to change current image of the carousel, like description or to invert the swipe direction.
description |
Type:
string optional
Optional description text.
Attention: this is not the full description, but only the last part, after image numbers.
For instance: `Image 2/12 - |
invertSwipe |
Type:
boolean optional
Optional boolean property to invert the default swipe direction on devices with touchscreen. |
The payload of events related to action, emitted by this library.
action |
Type:
Action
It's the enum |
result |
Type:
number | boolean
The result/data of the emitted event. For example, it could be the index of the current image or a boolean to say if images are ready to display and so on. |


This example is to demonstrate autoscaling of BE instances in response to changes in CPU utilisation and memory consumption.
The example allows users to create/delete Books in bulk, with each Book occupying around 10MB in cache. It also allows users to perform word count operation which increases CPU utilization.
Users can login to TEA server to witness new agents being added automatically to the cluster or existing ones being stopped in response to changes in CPU utilization or memory consumpion.
The create/delete book operations can be used to increase/decrease memory consumption of Cache agents. Similarly Book word count operation can be used to increase CPU utilization of Inference agents for a defined duration.
Open a command window and start your minikube instance with sufficient cpu and memory.
minikube start --cpus 8 --memory 10240 --disk-size 20gEnable the minikube metrics-server addon for Horizontal Pod Autoscaler to work.
minikube addons enable metrics-server
Configure your terminal to use docker daemon inside minikube instance, this will allow you to create docker images directly inside minikube instance instead of the host machine.
Execute below command that will display the actual configuration commands specific to your platform.
minikube docker-env
Execute the output of the above command on the same terminal.
Ensure that you use this terminal in the below steps to create BE app and the other docker images which will be created inside the minikube instance.
Create BE app image for the BooksApp. Before this step ensure that you create a new directory somewhere with BE and AS linux installer zip files, the path to this directory is hence forth referred as INSTALLERS-DIR.
cd BE_HOME/cloud/docker/bin ./build_app_image.sh -l INSTALLERS-DIR -a BE_HOME/cloud/kubernetes/minikube/autoscaling_example/app_dir -r booksapp:1.0
Create BE teagent image.
cd BE_HOME/cloud/docker/bin ./build_teagent_image.sh -l INSTALLERS-DIR -r beteagent
Create TEA server docker image.
Refer the TEA server README.md file located at TIBCO_HOME/tea/2.3/docker for steps on how to create TEA server docker image../build_tea.sh test.registry jdk-8u221-linux-x64.tar.gz 2.3.0 007
Now that all the needed docker images are ready inside the minikube instance. Create deployments and services using below command.
Create TEA server deployments and services.
Before running below command explore to TIBCO_HOME/tea/2.3/docker/sample-kubernetes
edit the file sample_deploy_tea_with_mount.yaml
and replace <DOCKER_REGISTRY>/tea:<tag>
with your TEA server repo name and tag, example-test.registry/tea:2.3.0-HF7
. You may also set imagePullPolicy as IfNotPresent
and remove volumes and volumeMounts sections for the sake of this tutorial.
kubectl create -f TIBCO_HOME/tea/2.3/docker/sample-kubernetes
Create BE TEA agent deployments and services.
kubectl create -f BE_HOME/cloud/kubernetes/minikube/tea
Create BE application depoyments and services.
kubectl create -f BE_HOME/cloud/kubernetes/minikube/autoscaling_example/configs
Start port forwarding for port 8080 and 8777 so that we can access them directly from this host machine.
New command window kubectl port-forward service/beapp-httpport-service 8080:8080
New command window kubectl expose deployment tea-server --type=NodePort --name=tea-service --port=8777 kubectl port-forward service/tea-service 8777:8777
Open TEA server in your browser and login - http://localhost:8777
You should see this application with all of its Cache and inference agents. While performing the remaining steps you can at anytime monitor the agents being automatically added/removed under this web console.
Create some Books, with each Book adding around 10MB to Cache agent's memory.
Increased memory usage should trigger scale up of Cache agents. Expect to see new Cache agents being started in realtime. You can perform this operation multiple times to create more Books hence utilizing even more memory.
Give the cluster sometime (about a minute) for it to autoscale.
Delete some Books, hence freeing up memory by 10MB for each Book.
Reduced memory usage should trigger scale down of Cache agents. Expect to see one or more Cache agents shutting down. Operation can be executed multiple times.
Each click of this operation spawns a thread in Inference agent that starts word count operation which runs for the specified duration. This results in higher CPU usage while the test executes.
Increased CPU usage should trigger scale up of Inference agents. Expect to see new Inference agents being started. In case you don't see enough CPU usage perform this operation multiple times to run multiple simultaneous executions of word count.
Leave the application running for some time without performing any operation and notice the number of inference agents going down as there is low CPU utilization.


Scaling Shiny Applications
How to scale up dockerized shiny applications
If you saw my previous post about dockerizing Shiny applications, you know it’s possible to turn a Shiny application into a standalone Shiny web app. The challenge, however, is that each instance is resource intensive. One way to solve this is by using Shiny Server…at a cost of ~$15,000. Since this is just slightly outside my budget, I looked for a different way. I came across ShinyProxy and it seemed to fit my needs perfectly.
The website does a great job of getting you started. Here are some of the challenges I faced and how I solved them.
Installation
I first needed to install Java and Maven using:
apt install jre8-openjdk-headless
apt install maven
ShinyProxy needs to connect to the docker daemon to spin up the containers for the Shiny apps. By default ShinyProxy will do so on port 2375 of the docker host. In order to allow for connections on port 2375, the startup options need to be edited. In Ubuntu 18.04 this looks like:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H unix:// -D -H tcp://<IP_ADDRESS>:2375
And restart the service using:
sudo systemctl daemon-reload
sudo systemctl restart docker
Configuration
This might have been the most challenging part. I went with a simple configuration file
by modifying the application.yaml
located at /etc/shinyproxy/application.yaml
as such:
proxy:
title: CV Risk Scores
logo-url: http://www.openanalytics.eu/sites/www.openanalytics.eu/themes/oa/logo.png
landing-page: /
heartbeat-rate: 10000
heartbeat-timeout: 60000
port: 8080
authentication: none
# Docker configuration
docker:
url: http://localhost:2375
port-range-start: 20000
specs:
- id: watchdm
display-name: WATCH-DM
description: Calculate the WATCH-DM risk score
container-cmd: ["/usr/bin/shiny-server.sh"]
container-image: watchdm
port: 3838
logging:
file:
shinyproxy.log
Reverse Proxy
This worked! But the URL was ugly. I wanted to change it to something more appealing.
Enter nginx. I installed nginx per the instructions and made a new server block as follows in
/etc/nginx/sites-available/cvriskscores.com
:
server {
listen 80;
listen [::]:80;
server_name shinyproxy.cvriskscores.com;
location / {
proxy_pass http://<IP_ADDRESS>:8080;
}
}