Diverting solar power to charge an electric car appears more complicated than diverting for water heating.
The load is not resistive and it is probably not acceptable to have very rapid on/off cycles. Not all electric cars use the same method of converting power from a 13A socket to DC battery charging, but its probably safe to assume the methods include switch mode AC/DC converters and that the power factor isn't 1.
My purpose in starting this topic is to discover what experience members have of using solar to charge electric cars. How can my EmonPi and EmonTx be applied to the task?
At present we switch on manually when the sun shines and off when it isn't. The primary power source is mains and the grid tied solar inverter contributes a proportion depending on the sunshine, reducing both our electricity bills and our carbon footprint. My aim is to automate this process to optimise solar use, not eliminate the grid contribution.
Fred
Re: Diverting Solar to Charge an Electric Car
Aye, not easy without an additional layer of battery storage. I have a Mitsubishi PHEV which will charge at either 10A using the portable EVSE or at 16A using the normal wall charger. I have a timer with a manual override at the moment and have been thinking the same thing.
My thoughts were that the manual override is just a plain 240V switch - no load, just a switch. Using some sort of remote control should be possible for me to replace this with an automated control. The logic I would apply would be along the lines of a level being reached for a sustained period (3kW for 5 mins) and then turning on for a minimum period (say 15 mins) regardless of subsequent solar output and finally just applying the same rules continously - so that the "on" time always exceeds the test time and hence the power will stay on until the solar PV stops generating a high enough current for a while. I have not yet written this logic out, but I hope you see what I mean?
My finger-in-the-air hi/low watermarks are based on day/night rate differences (16.5p/7p for me) and a small "virtue bonus" of using solar where available.
I would also note that the wall mount EVSE (an ABL unit) can be programmed via some serial interface to supply 6/10/16A/32A max to the car - it would be cute to be able to drive that, but that's outside my thoughts this year.
In fact, the WiFi MQTT relay in the online store might just work for me out of the box, so to speak. Hmm.
Re: Diverting Solar to Charge an Electric Car
Thanks for your input Peter.
We are retired so the car spends a lot of its time in the garage during the day. We don't have Economy 7 or 10, or a smart meter at present.
One of the options I'm looking at is to use a LightwaveRF relay or remote control 13A socket. I have other LightwaveRF equipment in use.
The Zoe takes 2.3 kW (10A nominal - no idea of the inrush current) when using its "Granny cable" (occasional EVSE cable) . The solar can deliver up to 3.6 kW in summer but typically 1.5 to 2 kW spring to autumn. When time matters we can use our 7 kW charger.
The LightwaveRF relay or socket can, in theory, be controlled using MQTT from the EmonPi, though I might use my Raspberry Pi instead to avoid the risk of messing up the EmonPi.
I'm having a tough time doing the simple things with Emoncms at the moment, I've forgotten an awful lot in the 25 years since I was last building and programming hardware, hence my interest in learning from others.
As you've said, its not a simple case of turning the supply on and off according to the instantaneous solar output. As far as the car is concerned once plugged in and charging any break and resumption in the charging process without being unplugged and plugged in again (at the car) is regarded as an electrical system fault, and the car's computer sends out worrying messages. Other models may not be as fussy.
Fred
Re: Diverting Solar to Charge an Electric Car
Well, now prompted by you I have ordered the WiFi relay controller from the store and I will wire it up "in parallel" with my manual override switch and then at least I have the hardware to le me think through the issues of limits and timing. I have never played with node red, but it does look interesting and a probable candidate for this kind of control.
Re: Diverting Solar to Charge an Electric Car
Hi Fred
You're wasting a lot of energy when charging the ZOE at this low amperage. I measured a lot of wasted energy when I charge my ZOE below 20A per phase. I have a charger where I can setup charging on 1-3 phases from 6-35A so I tested a lot with it.
 And the battery is around 24kw. With 20A it was just 27kw to load it and with 30A it was almost spot on.
I just can propose to use a charge controller which uses a 0-10V input which lets you actually change the charge instantaneously. The Zoe allows that without stopping charging (when not going under 10A). This charge controller is also mounted on my Bettermann B3200 charging box.
You can find something here: http://www.ladesystemtechnik.de/ev-plug-technologies/ladesteuerung-mit-potenziometer-37
Here is the data sheet for it: http://rtp-service.de/wp-content/uploads/2014/09/32A-ICC-Box-Datasheet.pdf
I think this way is a little bit nicer instead of cutting of power. I of course understand that you want to shut it off completely but you have to check carefully if the cars are not seeing it as "powerloss" moment and then are sending errors. When I disrupt my ZOE during power by switching of the box it goes into an error mode and will not leave it until I disconnect and then reconnect the charging cable. You have to check that first. With above solution you can actually use a wide power band.
Re: Diverting Solar to Charge an Electric Car
Hi Andi
I'll have a look at your links as soon as I can.
I'm aware 10A charging of the Zoe is less efficient, but if we are charging entirely or substantially from the Solar then we get paid the same whether we use the energy or feed it to the grid, so I'd like to minimise how much energy we buy in to charge the car.
Ideally I would control the car remotely so that it switches charging on and off, but that's another story.
Thanks
Fred
Re: Diverting Solar to Charge an Electric Car
I've been playing with Nodered and what I thought was simple to express took quite a lot of fiddling.  Obviously the MQTT as source needs changing and at the moment all it does is output debug numbers. My local copy also sends me an e-mail every time it switches the output from 0 -> 1 -> 0 etc.
The bit I spent ages pondering over and realised was that you need two triggers for each on high and low watermarks. The first trigger triggers the latch and then the latch keeps the output the same for a period unless reset.
This is the start of how I hope to control my EVSE via the WiFi relay.
Comments welcome.
Re: Diverting Solar to Charge an Electric Car
I did a board about a year ago to do PV variable charging based on the emonrx test sketch and an AD5206
The code is here which you can use in a spare emontx2 if you like, you will need a rolec/mainpine charger
https://github.com/dodavies/Solar-EPC-Controller
Re: Diverting Solar to Charge an Electric Car
Diverting solar power to charge an electric car appears more complicated than diverting for water heating.
The fundamental problem is that battery chargers are not well suited to using only power that would otherwise be surplus. They like their source of power to be continuous.
I started this thread a while ago in order to develop such ideas, but am not aware of anyone following it up.
https://openenergymonitor.org/emon/node/5391
Re: Diverting Solar to Charge an Electric Car
Hi Robin
Thanks for your reply and the interesting link. As a young design engineer 45 years ago I would have been keen to solve all my own problems, but I'm older and a teeny bit wiser now, and I am grateful to be able to learn from others.
Unlike some DC charged EVs the Renault Zoe has a computer controlled AC/DC converter and the computer is fussy. The minimum charging period is 15 minutes, and if there is a break in the charging period between plugging in the car and unplugging the car it decides the electrical system is faulty and sends out messages to "check the electrical system" (worries the wife a lot). So you can't have an on-off on-off on-off charging situation.
So the extra considerations include:
Minimum charge period 15 minutes.
One charge period
Charge between hours when the sun is high enough in the sky
Detect sunshine intensity
Detect cloud cover and try to estimate probability of continuing sunshine
Is other equipment already using solar output?
Some of these requirements may be impossible to meet, particularly cloud cover prediction since it depends on wind speed and direction at cloud, not ground, level. Can one really trust a weather forecast?
Unfortunately, the only way to remotely control the in-car charger is via a Renault service, where a charge period is set in their database using a calendar via a ZE services App. There appears to be a restriction to one charge period a day. Its also not totally reliable.
But only by analysing a problem do we ever find solutions.
Fred
Re: Diverting Solar to Charge an Electric Car
FB: Thanks for your reply and the interesting link.
The scheme that I've described in that thread is just a logical framework. Within that framework, rules that are appropriate for the application need to be added.
Having your charger remain on for a minimum of 15 minutes at a time is simple; deciding exactly when the charger should come on is less so. The more sensors that you have, such as "sunshine intensity" and "height of sun in sky", the more complex those rules will become. The coding of complex rules is not difficult, but getting those rules to behave as intended and be bug-free may be challenging.
The system that I've proposed has only one input, namely CT1 which allows the overall energy state of the premises to be monitored. When the energy state rises, there must be some surplus power. Apart from the instantaneous energy state, the control logic also knows about the state of each load (but not whether it is actually consuming power) and the passage of time.
By "one charge period", I take it that the car's inbuilt control system has one pre-set charging period with the 24-hour day, similar to the charging period for an overnight storage heater. When taking an electric vehicle on a long journey, multiple charging sessions may be needed (each one being at least 15 mins in duration), so I would have thought that having multiple charging sessions to suit the weather conditions should be OK too.
On a "sunshine & showers" day, my suggested logic would detect X amount of surplus power and then apply full power to the car's charging system for at least the next 15 minutes, whatever the weather. At some stage, power would be removed because PV power was too low. Later again, when conditions improve, the next burst of power would commence; and so on while surplus power was available.
Having small loads come on first is a convenient way of determining when surplus power is sufficient to warrant firing up the first "continuous" load.
Re: Diverting Solar to Charge an Electric Car
The restriction to one charge a day is for remote control of charging via the Renault services app. You can manually charge as many times as necessary. Sorry if that was not clear.
Fred
Re: Diverting Solar to Charge an Electric Car
If the supply that you use for charging goes 'on' for at least 15 minutes, then goes 'off' for a while before returning to the 'on' state for another 15+ minute period, will that be acceptable to the vehicle's diagnostic system?
Or is the process of doing a manual charge more complex than just switching the power supply on and then off 15+ minutes later.
Re: Diverting Solar to Charge an Electric Car
No and Yes:
Manual charging in the intended way is simple:
1) open charge flap using remote or in-car switch
2) plug in charger (car locks connector in place)
3) car identifies charger type (2.3/7/22/43 kW) and begins charging
4) if 100% charge achieved car stops charging, else manually stop charge by switching off supply (some charge points may cut supply after a predetermined time eg. 30 minutes)
5) use remote or in-car switch to release connector
6) unplug charger
7) close charge flap
If for any reason the supply stops and restarts between (3) and (4) the car will issue "Check Electrical System" or, worse, "Battery Charge Impossible". The former will go away if the car is unplugged and left for a short while, whereas the BCI message has given some people real problems, the car still refusing to charge having been unplugged and taken to a another charger and plugged in.
I've known the car carry on charging when an interrupted supply is resumed even though it presents the CES message.
Timed Control of charging assumes (1) and (2) have been performed.
TC can be set from the car using the touch screen or via an Android or iOS app which communicates with the Renault ZE services web site. In the latter case Renault transmits the start and stop times to the car via the O2 network. It isn't 100% reliable. If you are not in an O2 area it doesn't work. If the car has charge times set it won't charge outside the set period even though you carry out the manual procedure. The charge timer settings have to be canceled first. This has caused some anxious moments for those who use the timer to regularly charge overnight on economy 7 if they have needed to charge in the daytime.
It is the TC method that specifies only one charge period per day with a minimum of 15 minutes. I haven't used it yet.
At the start of charge time (3) will be performed.
When full charge or end of timed period (4) occurs.
Some time after the end of charge (5) (6) and (7) have to be performed before driving (obviously).
Renault monitors charging of the car and the use of the battery. Start and end of charge are notified to the user by email. Charge state is monitored by Renault every 20 minutes when the car is plugged in.
Hope that clarifies. Renault are not very forthcoming on detail and rather slow to remedy bugs in their software. Sometimes translation errors add to the fog.
Fred
Re: Diverting Solar to Charge an Electric Car
The key point to establish is whether it's OK for your charger's power supply to be activated for periods of some minimum duration, and deactivated without warning in between. From the info that you've provided, it seems that this would be OK. In which case, the logic that I've outlined in my "smarter loads" thread may be of use to you.
Send me a PM if you would like any practical help with this.
Re: Diverting Solar to Charge an Electric Car
Is it possible to turn the charging Off or On via a webpage by maybe setting and cancelling the timer? If it is you could use something like Openhab to periodically take snapshots of surplus power and then send a new timer schedule out via the internet to turn the charging on once a threshold is reached. You could then run a 15 minute timer before getting it to check that the Grid power draw is not excessive, and if it is turn the charger off. This of course assumes it doesn't get upset when the timer is cancelled and recreated.
I use something similar albeit a simple On and Off command to operate my upstairs cooling in summer, it works well.


The Marvel Cinematic Universe has gone too far. How am I supposed to remember this banana’s backstory? How many movies do I need to watch to be prepared to eat the banana? Who is the bananas nemesis? 🦸♂🍌
9/25/2022, 1:07:50 PM
Favs: 4
Retweets: 0
link


{% extends "layout.html" %} {% import "includes/details.html" as details %} {% block content %} Home > Locations > {{ location.description }} {{ details.render(location.description, columns, location) }} {% endblock %}
Home > Locations > {{ location.description }}


I'm a header 1!
Hello there, awesome person!
This is a link to OWL!
This is a link to YouTube!
This is a link to Google!


Communication
This class is responsible for server communication using http requests
Constructor Summary
| Public Constructor | ||
| public |
constructor(form: FormData) Creates an instance of Communication |
Member Summary
| Public Members | ||
| public get |
form: FormData: * Returns the FormData object attached to the request. |
Method Summary
| Public Methods | ||
| public |
cancel() Abort a request |
|
| public |
Clears all the set headers |
|
| public |
deleteHeader(name: String) Delete a header by key |
|
| public |
Initiate a GET request |
|
| public |
Gets a header by key |
|
| public |
getHeaders(): Object Returns an object containing all the headers sets |
|
| public |
Sets a listener to track the progress of the request |
|
| public |
Parse a url to the correct format |
|
| public |
Initiate a POST request |
|
| public |
Initiate the request |
|
| public |
Sets a header to the request |
Public Constructors
public constructor(form: FormData) source
Creates an instance of Communication
Params:
| Name | Type | Attribute | Description |
| form | FormData |
|
An existing form that would be sent |
Public Members
public get form: FormData: * source
Returns the FormData object attached to the request. This makes it easier to control the fields.
Return:
| FormData | FormData attached to the request |
Public Methods
public deleteHeader(name: String) source
Delete a header by key
Params:
| Name | Type | Attribute | Description |
| name | String | Header name |
public get(url: String) source
Initiate a GET request
Params:
| Name | Type | Attribute | Description |
| url | String | The url to request to |
public getHeader(name: String): String source
Gets a header by key
Params:
| Name | Type | Attribute | Description |
| name | String | Header name |
public listener(progress: Function, end: Function) source
Sets a listener to track the progress of the request
Params:
| Name | Type | Attribute | Description |
| progress | Function |
|
This function has two parameters, one parameter represents the progress value and the second is the event for onprogress |
| end | Function | This function has three parameters, one parameter is the error and one which contains the responseText, and the third one will contain the entire event of onloadend |
public parseUrl(url: String): * source
Parse a url to the correct format
Params:
| Name | Type | Attribute | Description |
| url | String | The url to request to |
Return:
| * |
public post(url: String) source
Initiate a POST request
Params:
| Name | Type | Attribute | Description |
| url | String | The url to request to |


I am a sophomore studying interactive design at Kennesaw State University.
I am experienced in both web-development and graphics designing.
You can view samples of my work on the
portfolio page or my resume here.
I would love to hear from you! Feel free to follow me on social media
and leave any feedback you have.


Parentheses ():
Parentheses have multiple functions relating to functions and structures. They are used to contain a list of arguments passed to functions and control structures and they are used to group expressions to control the order of execution. Some functions have no arguments and in this case, the space between parentheses is blank.
Examples:
function(a, b, c, d)
// Defining a function.
while (true) or, for (var i = 0; i < 10; i++)
// Defining the condition in a Loop.
if(condition)
// Defining the condition in the statement.
Brackets []:
In JavaScript we can use square brackets to define an array myArray =[]
. Also we can use them if we need to get access into the Arrayvar cars = array[0] + array[1]
Curly Braces {}:
With Curly Braces we define the beginning and the end of functions blocks and statement blocks such as the for() and if()
structures:
for (i = 0; i < cars.length; i++)
{text += cars[i] + "";}
if (cars) {code to execute when cars is true }
, or while (cars) { loop here }
or function f() { function here }
.
Single Quotes '' & Double Quotes "" :
In Javascript we can use singles or double quotes to define a string literal like:
var person = "It's ok?";
var person = "Yes is all 'Good'";
//or we can write,
var person = 'Yes is all "Good"';


class
:
Cluster
.
Worker
Events
disconnect
error
exit
listening
message
online
Member Properties
id
process
suicide
Methods
disconnect
isConnected
isDead
kill
send
Additional Documentation Pages
Library Documentation
Events
disconnect
error
exit
listening
message
online
Member Properties
|
String
id
|
child_process:ChildProcess
process
|
Boolean
suicide
Methods
disconnect
(
) {
isConnected
(
) {
isDead
(
) {
kill
(
) {
send
(
) {


Florida county spends $182K on koozies at official-run firm
by Associated PressFORT LAUDERDALE, Fla. (AP) — A Florida county has spent about $182,000 on beer koozies meant to promote the area that an audit found were produced by a government official’s company.
The South Florida SunSentinel reports that auditors say Carol Hudson used her position as county vice president of sports marketing to buy almost $420,000 in swag for the county. She used her own Saints Enterprises without telling officials of her connection to it.
An audit released Friday found that is not allowed under county rules.
County Auditor Bob Melton said he will send a report to the State Attorney’s Office to decide if charges should be filed.
Hudson resigned in September as the information came to light. Hudson did not return emails Friday seeking comment.


| # | Who | = | Penalty | * | A | B | C | D | E | F | G | H |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Droping_points | 8 | 171 | + 00:09 | + 00:11 | + 00:05 | + 00:05 | + 00:11 | +1 00:23 | +1 00:43 | + 00:44 | |
| 2 | shroud1403 | 8 | 206 | + 00:02 | + 00:04 | + 00:10 | + 00:14 | + 00:21 | + 00:53 | + 00:36 | + 01:06 | |
| 3 | AakashGoyal | 8 | 284 | + 00:03 | + 00:06 | + 00:11 | + 00:18 | + 00:32 | + 00:44 | +1 00:55 | +1 01:35 | |
| 4 | AW_Flister | 8 | 286 | + 00:02 | + 00:05 | + 00:12 | + 00:16 | + 00:27 | + 00:50 | + 01:14 | + 01:40 | |
| 5 | Mr.Dhingra | 8 | 301 | + 00:03 | + 00:08 | + 00:17 | + 00:27 | + 00:37 | + 00:52 | + 01:00 | + 01:37 | |
| 6 | annnie | 8 | 306 | + 00:03 | + 00:05 | + 00:10 | + 00:16 | + 00:26 | + 01:00 | + 01:14 | +1 01:42 | |
| 7 | pikel_rik | 8 | 313 | + 00:04 | + 00:06 | + 00:10 | + 00:14 | + 00:25 | + 00:47 | + 00:58 | +4 01:49 | |
| 8 | example_26 | 8 | 327 | + 00:03 | + 00:07 | + 00:12 | + 00:19 | + 00:28 | +3 00:53 | + 01:09 | + 01:46 | |
| 9 | okkkk | 8 | 330 | + 00:04 | + 00:08 | + 00:13 | + 00:19 | + 00:36 | +1 01:40 | + 01:04 | + 01:16 | |
| 10 | terry_u16 | 8 | 333 | + 00:03 | + 00:08 | + 00:17 | + 00:23 | + 00:34 | + 01:05 | + 01:18 | + 01:45 | |
| 11 | stnkien | 8 | 358 | + 00:04 | + 00:16 | + 00:16 | + 00:20 | + 00:26 | + 00:50 | +2 01:32 | + 01:54 | |
| 12 | I_lo_lo_iu | 8 | 361 | + 00:18 | + 00:12 | + 00:08 | + 00:25 | + 00:56 | + 00:59 | + 01:21 | + 01:42 | |
| 13 | Induber | 8 | 363 | + 00:29 | + 00:18 | +1 00:16 | + 00:26 | + 00:38 | + 00:47 | + 01:02 | + 01:57 | |
| 14 | Sherlocked_221B | 8 | 369 | +1 00:10 | + 00:12 | + 00:19 | + 00:23 | + 00:58 | +2 00:41 | + 01:05 | + 01:51 | |
| 14 | bossLogic | 8 | 369 | + 00:04 | + 00:07 | + 00:15 | + 00:20 | + 00:27 | +1 01:07 | +1 01:34 | + 01:55 | |
| 16 | Edviv | 8 | 380 | + 00:07 | + 00:12 | + 00:17 | +2 00:37 | + 00:56 | + 01:18 | +1 01:41 | + 00:42 | |
| 17 | vgarg_2.0 | 8 | 407 | + 00:03 | + 00:07 | +4 00:32 | + 00:37 | + 00:44 | + 01:03 | + 01:18 | + 01:43 | |
| 18 | Just_a_game_on_your_lips | 8 | 428 | + 00:06 | + 00:08 | + 00:13 | +1 00:48 | + 00:57 | + 01:13 | + 01:45 | + 01:48 | |
| 19 | 82enjoy | 8 | 441 | + 00:08 | + 00:14 | + 00:20 | + 00:29 | + 00:47 | +2 01:23 | + 01:33 | +1 01:57 | |
| 20 | Mei_Misaki | 8 | 475 | + 01:10 | + 01:07 | + 01:04 | + 00:58 | + 00:53 | + 00:48 | + 01:31 | + 00:24 | |
| 21 |<PHONE_NUMBER> | 8 | 480 | + 00:23 | + 00:28 | + 00:34 | +1 00:44 | + 00:55 | + 01:16 | +2 01:40 | +1 01:20 | |
| 22 | Codex- | 8 | 499 | + 00:33 | + 01:09 | + 01:57 | +1 00:25 | + 00:14 | + 00:40 | +1 01:11 | +1 01:40 | |
| 23 | wanqiaoNO2 | 8 | 870 | + 01:52 | + 01:52 | + 01:51 | + 01:50 | + 01:48 | + 01:47 | + 01:44 | + 01:46 | |
| 24 | lrcsm800513txczs | 8 | 923 | + 01:53 | + 01:54 | + 01:54 | + 01:55 | + 01:55 | + 01:58 | + 01:57 | + 01:57 | |
| 25 | AswatthaFei | 7 | 167 | + 00:03 | + 00:06 | + 00:10 | + 00:15 | + 00:23 | +1 00:44 | + 00:56 | ||
| 26 | AhmedGhazaly | 7 | 185 | + 00:02 | + 00:07 | + 00:11 | + 00:15 | + 00:28 | + 00:43 | -5 | + 01:19 | |
| 27 | r3novatio | 7 | 191 | + 00:02 | + 00:05 | + 00:11 | + 00:20 | + 00:26 | +1 00:45 | +1 01:02 | ||
| 28 | Warriors_Cat | 7 | 194 | + 00:03 | + 00:06 | + 00:11 | + 00:17 | + 00:26 | + 00:53 | +1 01:08 | -3 | |
| 29 | safon | 7 | 206 | + 00:03 | + 00:06 | + 00:10 | + 00:14 | + 00:29 | + 00:51 | -1 | + 01:33 | |
| 29 | pauchok | 7 | 206 | + 00:03 | + 00:06 | + 00:26 | + 00:13 | + 00:44 | + 00:37 | + 01:17 | ||
| 31 | _0-1_nap_nap_ | 7 | 208 | + 00:05 | + 00:10 | + 00:15 | + 00:22 | + 00:36 | + 00:46 | + 01:14 | -1 | |
| 32 | xiaobai11 | 7 | 221 | + 00:03 | + 00:06 | + 00:12 | + 00:23 | + 00:42 | + 00:58 | + 01:17 | ||
| 33 | ngsm | 7 | 222 | + 00:04 | + 00:07 | + 00:17 | + 00:30 | + 00:40 | + 00:54 | + 01:10 | -3 | |
| 33 | Pickachu2003 | 7 | 222 | + 00:02 | + 00:05 | + 00:10 | + 00:15 | + 00:26 | +2 00:40 | -3 | + 01:44 | |
| 35 | punit0re | 7 | 226 | + 00:01 | + 00:05 | + 00:16 | + 00:21 | + 00:28 | + 00:48 | +2 01:27 | ||
| 36 | wwdk | 7 | 228 | + 00:04 | + 00:07 | + 00:12 | + 00:16 | + 00:35 | + 00:57 | +1 01:27 | ||
| 37 | -______________- | 7 | 230 | + 00:02 | + 00:07 | + 00:11 | + 00:15 | + 00:21 | + 00:54 | -6 | +2 01:40 | |
| 38 | tongzhi1007 | 7 | 232 | + 00:03 | + 00:07 | + 00:12 | + 00:21 | + 00:44 | + 01:04 | + 01:21 | ||
| 38 | khushiagr99 | 7 | 232 | + 00:03 | + 00:06 | + 00:10 | + 00:13 | +1 00:26 | + 00:41 | -3 | +1 01:53 | |
| 40 | mithunreddy | 7 | 233 | + 00:05 | + 00:08 | + 00:13 | + 00:21 | + 00:31 | + 00:58 | + 01:37 | ||
| 41 | Gobi_codeforces | 7 | 235 | + 00:04 | + 00:07 | + 00:10 | + 00:24 | + 00:31 | + 00:43 | -1 | + 01:56 | |
| 42 | IQ2 | 7 | 240 | + 00:06 | + 00:10 | + 00:24 | + 00:30 | + 00:38 | + 00:48 | -2 | + 01:24 | |
| 42 | to_mare | 7 | 240 | + 00:05 | + 00:04 | + 00:17 | + 00:12 | +1 00:55 | +1 00:45 | -7 | + 01:22 | |
| 44 | pie_007 | 7 | 242 | + 00:06 | + 00:10 | + 00:18 | + 00:25 | + 00:33 | + 00:57 | +1 01:23 | ||
| 44 | risk_17 | 7 | 242 | + 00:04 | + 00:08 | + 00:16 | + 00:24 | + 00:33 | + 00:54 | + 01:43 | ||
| 46 | LorenaMaria10 | 7 | 243 | + 00:05 | + 00:09 | + 00:15 | + 00:21 | + 00:29 | + 00:50 | +1 01:44 | ||
| 47 | Denx24x | 7 | 244 | + 00:02 | + 00:05 | + 00:18 | + 00:23 | + 00:28 | + 00:50 | -3 | + 01:58 | |
| 47 | iamprayush | 7 | 244 | + 00:04 | + 00:08 | + 00:47 | + 00:19 | + 00:30 | + 00:53 | +1 01:13 | ||
| 49 | cridaflo | 7 | 247 | + 00:02 | + 00:07 | + 00:13 | + 00:18 | + 00:33 | + 00:45 | +2 01:49 | ||
| 50 | jainanshul3863 | 7 | 248 | + 00:04 | + 00:08 | + 00:13 | + 00:20 | + 00:34 | + 00:56 | + 01:53 | ||
| 51 | anishde85 | 7 | 249 | + 00:03 | + 00:07 | +1 00:18 | + 00:23 | + 00:29 | +3 00:50 | +1 01:09 | ||
| 51 | _m44 | 7 | 249 | + 00:05 | + 00:10 | + 00:26 | + 00:31 | + 00:38 | + 00:52 | +1 01:17 | ||
| 51 | Tathagat_shah | 7 | 249 | + 00:03 | + 00:06 | + 00:12 | + 00:20 | + 00:27 | + 00:54 | +3 01:37 | ||
| 51 | anupamm98 | 7 | 249 | + 00:06 | + 00:10 | + 00:15 | + 00:23 | + 00:32 | + 00:51 | -1 | + 01:52 | |
| 55 | Isaunoya_caib | 7 | 250 | + 00:03 | + 00:06 | +2 00:21 | + 00:24 | -1 | + 01:18 | + 00:43 | + 00:55 | |
| 55 | uzzal_rahman | 7 | 250 | + 00:05 | + 00:10 | + 00:24 | +1 00:31 | + 00:38 | + 00:51 | +1 01:11 | ||
| 57 | anhacker | 7 | 251 | + 00:03 | + 00:11 | + 00:23 | + 00:29 | + 00:43 | + 00:55 | +1 01:17 | ||
| 58 | mansur51 | 7 | 253 | + 00:05 | + 00:10 | + 00:16 | + 00:23 | + 00:29 | + 00:57 | +1 01:43 | ||
| 59 | PS41 | 7 | 254 | + 00:03 | + 00:08 | + 00:12 | + 00:21 | + 00:29 | +2 01:08 | + 01:33 | ||
| 59 | NaMN | 7 | 254 | + 00:03 | + 00:08 | + 00:12 | +1 00:21 | + 00:30 | + 01:07 | + 01:43 | ||
| 61 | chomonolis | 7 | 258 | + 00:05 | + 00:10 | + 00:17 | + 00:25 | + 00:42 | +1 01:08 | + 01:21 | ||
| 62 | MAFIA_688 | 7 | 260 | + 00:10 | + 00:15 | + 00:23 | + 00:28 | + 00:41 | + 00:58 | + 01:25 | ||
| 63 | mujtabax | 7 | 261 | + 00:04 | + 00:07 | + 00:14 | + 00:26 | + 00:53 | + 01:08 | + 01:29 | ||
| 63 | TheRedLegend | 7 | 261 | + 00:04 | + 00:07 | + 00:12 | + 00:17 | +2 01:09 | + 00:54 | -3 | + 01:18 | |
| 65 | linesekarenge | 7 | 263 | + 00:10 | + 00:13 | + 00:21 | + 00:28 | + 00:42 | + 00:54 | -2 | + 01:35 | |
| 65 | hardikgupta568 | 7 | 263 | + 00:05 | + 00:13 | + 00:20 | + 00:24 | + 00:40 | + 00:57 | +1 01:34 | ||
| 67 | Zular. | 7 | 266 | + 00:04 | + 00:08 | + 00:15 | + 00:22 | + 00:35 | +1 00:57 | +1 01:45 | ||
| 68 | Q.E.D | 7 | 267 | + 00:02 | + 00:05 | + 00:11 | + 00:20 | + 00:28 | +1 01:17 | + 01:54 | ||
| 68 | Tom66 | 7 | 267 | + 00:02 | + 00:05 | +1 00:15 | + 00:20 | + 00:33 | +1 01:19 | + 01:33 | ||
| 70 | patelkishan651 | 7 | 269 | + 00:05 | + 00:08 | + 00:16 | + 00:23 | + 00:39 | +1 01:07 | + 01:41 | ||
| 70 | DeepBorys | 7 | 269 | + 00:03 | + 00:08 | +2 00:20 | + 00:26 | + 00:38 | + 00:58 | +1 01:26 | ||
| 72 | zhangzx123 | 7 | 271 | + 00:03 | + 00:08 | + 00:13 | + 00:30 | + 00:41 | + 01:20 | + 01:36 | ||
| 73 | dongqingzhu | 7 | 272 | + 00:06 | + 00:09 | + 00:20 | + 00:25 | + 00:36 | + 01:16 | + 01:40 | ||
| 74 | shub000231 | 7 | 273 | + 00:03 | + 00:07 | + 00:13 | + 00:29 | + 00:40 | +1 01:18 | + 01:33 | ||
| 74 | henrycavill | 7 | 273 | + 00:05 | +1 00:11 | +1 00:23 | + 00:28 | + 00:48 | + 00:59 | + 01:19 | ||
| 76 | LiangMu | 7 | 274 | + 00:05 | + 00:08 | + 00:14 | + 00:45 | + 00:29 | +1 01:13 | + 01:30 | ||
| 77 | Ekist_F | 7 | 275 | + 00:03 | + 00:06 | + 00:09 | +2 00:23 | + 00:30 | +2 01:35 | + 01:09 | ||
| 78 | madmin2619 | 7 | 278 | + 00:04 | + 00:07 | + 00:16 | + 00:21 | + 00:32 | + 01:21 | + 01:57 | ||
| 79 | codelover_22 | 7 | 279 | + 00:05 | + 00:12 | + 00:23 | + 00:32 | + 00:54 | + 01:07 | + 01:26 | ||
| 79 | manishsharmaa__ | 7 | 279 | + 00:05 | + 00:09 | + 00:14 | + 00:21 | + 00:34 | +1 01:01 | +3 01:35 | ||
| 79 | FromDihPout | 7 | 279 | + 00:04 | + 00:09 | + 00:16 | +1 00:27 | + 00:43 | +1 00:56 | -2 | + 01:44 | |
| 79 | chenshouao | 7 | 279 | + 00:03 | + 00:09 | + 00:17 | +2 00:33 | + 00:46 | + 00:59 | + 01:32 | ||
| 83 | MohamedK | 7 | 280 | + 00:08 | + 00:13 | + 00:21 | + 00:28 | + 00:37 | + 00:50 | +1 01:53 | ||
| 84 | boboxon | 7 | 282 | + 00:04 | + 00:07 | + 00:16 | + 00:19 | +1 00:41 | + 00:49 | +2 01:56 | ||
| 84 | _sv_ | 7 | 282 | + 00:05 | + 00:09 | +1 00:20 | + 00:33 | + 00:42 | + 01:32 | + 01:11 | ||
| 86 | Nonagon | 7 | 284 | + 00:04 | + 00:09 | + 00:18 | + 00:28 | + 00:38 | + 01:11 | + 01:56 | ||
| 87 | aniervs | 7 | 285 | + 00:03 | + 00:06 | + 00:24 | + 00:14 | + 00:41 | +3 01:14 | -1 | + 01:33 | |
| 87 | gourav987 | 7 | 285 | + 00:04 | + 00:08 | + 00:14 | + 00:20 | + 00:45 | + 01:30 | + 01:44 | ||
| 87 | dronemist | 7 | 285 | + 00:04 | + 00:07 | + 00:14 | + 00:21 | + 00:30 | +3 01:20 | + 01:39 | ||
| 90 | skystar666 | 7 | 286 | + 00:05 | + 00:08 | + 00:14 | +1 00:30 | + 00:43 | + 00:54 | +1 01:52 | ||
| 91 | n-i-t-i-s-h | 7 | 290 | + 00:05 | + 00:10 | + 00:18 | +1 00:33 | + 00:49 | + 01:14 | + 01:31 | ||
| 92 | piledriver | 7 | 291 | + 00:06 | + 00:11 | + 00:25 | + 00:32 | + 00:40 | + 01:12 | + 01:45 | ||
| 92 | Anmol321 | 7 | 291 | + 00:04 | + 00:07 | + 00:18 | + 00:27 | + 00:40 | +2 01:06 | + 01:49 | ||
| 94 | qkrwhdah03 | 7 | 292 | + 00:05 | + 00:09 | + 00:14 | + 00:23 | + 00:32 | + 01:09 | +3 01:50 | ||
| 94 | tsaraf | 7 | 292 | + 00:04 | + 00:10 | + 00:18 | + 00:31 | + 00:44 | + 01:10 | + 01:55 | ||
| 94 | hossainzarif | 7 | 292 | + 00:04 | + 00:08 | + 00:16 | +1 00:34 | + 00:42 | + 01:03 | +1 01:45 | ||
| 94 | TheLethalCode | 7 | 292 | + 00:05 | + 00:09 | + 00:19 | + 00:33 | + 00:42 | + 01:20 | + 01:44 | ||
| 98 | nandini18056 | 7 | 293 | + 00:04 | + 00:07 | + 00:15 | + 00:30 | + 00:39 | + 01:52 | + 01:26 | ||
| 98 | UnderDog_2199 | 7 | 293 | + 00:05 | + 00:11 | + 00:19 | + 00:27 | + 00:40 | + 01:26 | + 01:45 | ||
| 100 | bbg | 7 | 294 | + 00:04 | + 00:06 | +1 00:26 | + 00:30 | + 00:45 | + 00:54 | + 01:59 | ||
| 101 | Rock2000 | 7 | 295 | + 00:06 | + 00:11 | + 00:19 | + 00:25 | + 00:36 | +1 01:09 | +1 01:49 | ||
| 102 | hritik3878 | 7 | 296 | + 00:07 | + 00:12 | +1 00:23 | + 00:29 | + 00:40 | + 01:07 | + 01:48 | ||
| 103 | akshatarun17 | 7 | 297 | + 00:04 | + 00:10 | + 00:23 | + 00:35 | + 00:47 | + 01:11 | + 01:47 | ||
| 103 | CodAR | 7 | 297 | + 00:06 | + 00:08 | +1 00:24 | + 00:30 | + 00:35 | +2 01:04 | +1 01:30 | ||
| 103 | 213ddi | 7 | 297 | + 00:05 | + 00:09 | + 00:16 | + 00:24 | + 00:40 | + 01:34 | + 01:49 | ||
| 106 | gaurav_512 | 7 | 298 | + 00:03 | + 00:06 | + 00:12 | +1 00:20 | + 00:27 | + 00:57 | +5 01:53 | ||
| 107 | winter_summer | 7 | 300 | + 00:07 | + 00:10 | + 00:20 | + 00:27 | + 00:56 | + 01:22 | + 01:38 | ||
| 108 | HaKkaz.an | 7 | 301 | + 00:06 | + 00:10 | + 00:15 | +1 00:23 | + 00:34 | +1 01:02 | +2 01:51 | ||
| 109 | BusIgor | 7 | 302 | + 00:03 | + 00:06 | + 00:17 | +1 00:30 | + 00:40 | +1 01:09 | +2 01:37 | ||
| 110 | mimukh18 | 7 | 303 | + 00:05 | + 00:10 | + 00:14 | + 00:45 | + 00:56 | + 01:14 | + 01:39 | ||
| 111 | jimmy18 | 7 | 305 | + 00:03 | + 00:05 | + 01:24 | + 00:17 | + 00:45 | + 00:34 | -1 | + 01:57 | |
| 111 | AlanSkarica | 7 | 305 | + 00:05 | + 00:12 | + 00:21 | + 00:41 | + 00:51 | + 01:41 | + 01:14 | ||
| 113 | black_hole6 | 7 | 306 | + 00:06 | + 00:13 | + 00:25 | + 00:45 | + 01:13 | + 01:25 | + 00:59 | ||
| 113 | rrah97 | 7 | 306 | + 00:07 | + 00:10 | +1 01:13 | + 00:28 | + 00:38 | + 00:56 | + 01:24 | ||
| 115 | duangduang1 | 7 | 307 | + 00:05 | + 00:08 | + 00:14 | + 00:21 | + 00:33 | +4 01:21 | + 01:45 | ||
| 116 | altair2713 | 7 | 311 | + 00:03 | + 00:06 | + 00:11 | + 00:22 | +1 01:08 | + 01:25 | + 01:46 | ||
| 117 | fake_coder | 7 | 314 | + 00:07 | + 00:11 | + 00:24 | + 00:31 | + 00:42 | +1 01:08 | +1 01:51 | ||
| 117 | upside-down | 7 | 314 | + 00:04 | + 00:07 | + 00:15 | + 00:25 | + 00:31 | +1 01:30 | +2 01:52 | ||
| 119 | snehal007 | 7 | 315 | + 00:04 | + 00:09 | + 00:17 | + 00:29 | + 00:55 | +1 01:13 | + 01:58 | ||
| 120 | Away_Arma | 7 | 316 | + 00:06 | + 00:11 | + 00:21 | + 00:27 | + 00:56 | +1 01:25 | + 01:40 | ||
| 120 | please_cobra | 7 | 316 | + 00:05 | + 00:10 | + 00:20 | + 00:35 | + 00:47 | + 01:23 | + 01:56 | ||
| 120 | Eulerian | 7 | 316 | + 00:08 | + 00:12 | + 00:25 | + 00:32 | + 00:51 | +1 01:11 | +1 01:37 | ||
| 123 | xryuseix | 7 | 317 | + 00:03 | + 00:05 | +1 00:17 | +1 00:31 | + 00:43 | + 01:02 | +2 01:56 | ||
| 124 | tushaar11 | 7 | 318 | + 00:06 | + 00:11 | + 00:20 | + 00:29 | + 00:37 | +1 01:27 | + 01:58 | ||
| 125 | Sikander_sharma | 7 | 320 | + 00:05 | + 00:09 | + 00:15 | + 00:23 | + 00:33 | +2 01:59 | +1 01:26 | ||
| 126 | Wake_Me_Up | 7 | 321 | + 00:06 | + 00:10 | + 00:15 | + 00:40 | + 00:46 | + 01:22 | +1 01:52 | ||
| 126 | JerryDream | 7 | 321 | + 00:03 | + 00:07 | + 00:11 | + 00:16 | +2 00:59 | + 01:16 | +2 01:49 | ||
| 128 | devendra_singh | 7 | 323 | + 00:31 | +1 00:38 | + 00:45 | + 00:08 | + 01:00 | + 00:27 | + 01:44 | ||
| 129 | jk_896 | 7 | 325 | + 00:04 | + 00:10 | + 00:19 | +2 00:38 | + 00:43 | + 01:17 | +1 01:44 | ||
| 130 | dsc007 | 7 | 331 | + 00:05 | + 00:09 | + 00:19 | + 00:58 | + 00:43 | + 01:28 | + 01:49 | ||
| 130 | Dallby | 7 | 331 | + 00:03 | + 00:09 | + 00:21 | +2 00:35 | + 00:46 | +1 01:12 | + 01:55 | ||
| 132 | mr_pluto | 7 | 332 | + 00:06 | + 00:10 | +1 00:24 | + 00:35 | + 00:56 | + 01:21 | +1 01:40 | ||
| 133 | Tianpingan | 7 | 334 | + 00:07 | + 00:12 | + 00:39 | + 00:23 | + 00:52 | + 01:45 | +1 01:26 | ||
| 134 | jainnish98 | 7 | 336 | + 00:04 | + 00:08 | + 00:14 | + 00:21 | + 00:27 | +4 01:46 | + 01:56 | ||
| 134 | Rajat_Tyagi | 7 | 336 | + 00:04 | + 00:09 | + 00:23 | + 00:36 | + 00:54 | +2 01:19 | + 01:51 | ||
| 136 | ajayjagan2511 | 7 | 337 | + 00:03 | + 00:12 | + 00:18 | + 00:32 | + 00:39 | + 01:57 | +2 01:36 | ||
| 136 | Adson_S | 7 | 337 | + 00:06 | + 00:10 | +1 00:22 | + 00:31 | + 00:41 | +1 01:07 | +4 01:40 | ||
| 138 | The_Wanderer | 7 | 339 | + 00:04 | + 00:06 | + 00:19 | + 00:28 | + 00:35 | +4 01:26 | +1 01:51 | ||
| 138 | mintCHILL | 7 | 339 | + 00:02 | + 00:06 | + 00:17 | + 00:30 | + 00:42 | + 00:56 | +7 01:56 | ||
| 140 | amit_839 | 7 | 340 | + 00:11 | + 00:14 | +1 00:31 | + 00:38 | + 00:49 | +1 01:20 | + 01:37 | ||
| 140 | hello_my_friend | 7 | 340 | + 00:03 | + 00:11 | + 00:16 | + 00:19 | +4 01:07 | + 00:55 | +3 01:39 | -2 | |
| 142 | tanav | 7 | 342 | + 00:03 | + 00:07 | + 00:16 | +1 00:30 | + 00:38 | +3 01:57 | + 01:31 | ||
| 143 | Per12345 | 7 | 344 | + 00:03 | + 00:16 | + 00:24 | + 00:38 | + 00:49 | + 01:25 | +1 01:59 | ||
| 143 | gola | 7 | 344 | + 00:08 | + 00:13 | + 00:23 | + 00:45 | + 01:00 | + 01:24 | + 01:51 | ||
| 143 | Fengxiang | 7 | 344 | + 00:12 | + 00:19 | + 00:29 | + 00:44 | + 00:55 | + 01:16 | + 01:49 | ||
| 143 | guapaQAQ | 7 | 344 | + 00:04 | + 00:08 | + 00:17 | +1 00:27 | + 00:38 | +2 01:40 | +1 01:50 | ||
| 147 | t_suman | 7 | 346 | + 00:08 | + 00:14 | + 00:22 | + 00:31 | + 00:43 | +3 01:25 | + 01:53 | ||
| 148 | kick_buttowski_kachao | 7 | 347 | + 00:04 | + 00:11 | + 00:20 | +1 00:35 | + 00:48 | +1 01:37 | + 01:52 | ||
| 149 | Lev_Sky | 7 | 348 | + 00:08 | + 00:19 | + 00:26 | + 00:36 | + 00:53 | + 01:30 | + 01:56 | ||
| 150 | ash_04 | 7 | 349 | + 00:07 | + 00:14 | + 00:26 | + 00:40 | + 00:57 | + 01:34 | + 01:51 | ||
| 151 | phamhoanghiep03092004 | 7 | 351 | + 00:05 | + 00:08 | + 00:13 | +1 00:36 | + 00:44 | +1 01:48 | + 01:57 | ||
| 152 | svaderia | 7 | 357 | + 00:05 | + 00:10 | +2 00:40 | + 00:25 | + 00:45 | +2 01:52 | + 01:20 | ||
| 153 | yagamikira | 7 | 359 | + 00:05 | + 00:08 | + 00:43 | +2 00:30 | + 00:52 | + 01:08 | +2 01:53 | ||
| 154 | Gilfoyl | 7 | 365 | + 00:03 | + 00:07 | + 00:10 | +2 00:52 | + 01:02 | +2 01:27 | + 01:44 | ||
| 154 | ss_loves_ap | 7 | 365 | + 00:06 | + 00:09 | +1 00:24 | + 00:29 | + 01:00 | +1 01:58 | +1 01:29 | ||
| 156 | EMEJZ | 7 | 366 | + 00:04 | + 00:07 | + 00:12 | +1 01:10 | + 01:04 | + 01:34 | + 01:45 | ||
| 156 | Rian_5900 | 7 | 366 | -4 | + 00:11 | + 00:17 | + 00:28 | + 00:39 | +1 01:02 | + 01:30 | + 01:49 | |
| 158 | Carrl | 7 | 370 | + 00:05 | + 00:08 | + 00:16 | +3 00:39 | + 01:09 | + 01:49 | + 01:34 | ||
| 159 | blair_ | 7 | 371 | -1 | + 00:06 | + 00:11 | + 00:19 | + 01:56 | + 00:34 | +1 01:11 | + 01:44 | |
| 160 | htmb | 7 | 380 | + 00:05 | + 00:10 | + 00:16 | +4 00:46 | + 00:56 | +2 01:28 | + 01:39 | ||
| 161 | TaiRA | 7 | 384 | + 00:03 | + 00:06 | +2 00:31 | +1 00:42 | + 00:52 | +2 01:29 | +1 01:41 | ||
| 162 | shogun4200 | 7 | 386 | + 00:03 | + 00:08 | + 00:12 | +1 01:26 | + 01:14 | +2 00:59 | + 01:54 | ||
| 163 | NAbdulla | 7 | 387 | + 00:09 | + 00:14 | + 00:24 | +2 00:45 | + 01:07 | + 01:29 | + 01:59 | ||
| 164 | fnoigsh | 7 | 389 | + 00:09 | + 00:15 | + 00:29 | +2 00:42 | + 00:59 | +2 01:47 | + 01:28 | ||
| 165 | freedom_dr | 7 | 390 | + 00:23 | + 00:27 | + 00:36 | + 00:53 | +1 01:07 | + 01:23 | + 01:31 | ||
| 166 | ujjwal_keshri | 7 | 397 | + 00:05 | + 00:09 | +1 00:27 | + 00:51 | + 01:15 | + 01:44 | + 01:56 | ||
| 167 | ishabhray | 7 | 405 | + 00:05 | + 00:10 | + 00:17 | +2 01:59 | + 00:52 | + 01:07 | + 01:55 | ||
| 167 | divman78 | 7 | 405 | + 00:05 | + 00:10 | + 00:39 | + 00:59 | + 01:10 | +1 01:33 | + 01:59 | ||
| 169 | brurrito | 7 | 411 | + 00:05 | + 00:10 | + 00:14 | +3 01:33 | + 00:48 | +1 01:28 | + 01:53 | ||
| 170 |<PHONE_NUMBER>08 | 7 | 451 | + 00:04 | + 00:08 | +5 00:47 | + 00:59 | + 01:07 | +1 01:37 | + 01:49 | ||
| 171 | 0codeGod0 | 7 | 461 | + 00:06 | + 00:11 | +5 00:58 | +1 00:52 | + 01:11 | + 01:32 | + 01:51 | ||
| 172 | adwait_k12 | 7 | 495 | + 01:04 | + 01:05 | + 01:05 | + 01:06 | + 01:08 | + 01:08 | + 01:39 | ||
| 173 | ryuxin | 7 | 509 | + 01:43 | + 01:38 | + 01:33 | + 00:13 | +1 01:08 | + 00:47 | + 01:17 | ||
| 174 | 72nuaq | 7 | 568 | + 01:01 | + 01:04 | + 01:08 | + 01:13 | + 01:19 | +2 01:59 | + 01:24 | ||
| 175 | Rohit_1221 | 7 | 588 | + 01:20 | + 01:20 | + 01:21 | + 01:21 | + 01:22 | + 01:22 | + 01:42 | ||
| 176 | toad_to_dip | 6 | 79 | + 00:01 | + 00:03 | + 00:06 | + 00:09 | + 00:20 | + 00:40 | -4 | ||
| 177 | I_am_Drew | 6 | 88 | + 00:03 | + 00:05 | + 00:08 | + 00:16 | + 00:24 | -1 | + 00:32 | -2 | |
| 178 | thaizhenleng | 6 | 90 | + 00:02 | + 00:05 | + 00:12 | + 00:17 | + 00:22 | + 00:32 | -4 | ||
| 179 | MagentaArtist | 6 | 97 | + 00:01 | + 00:04 | + 00:08 | +1 00:15 | + 00:21 | + 00:38 | -7 | ||
| 180 | Fliahin | 6 | 107 | + 00:03 | + 00:07 | + 00:12 | + 00:19 | + 00:26 | + 00:40 | -1 | ||
| 181 | adi_g | 6 | 112 | + 00:02 | + 00:04 | + 00:09 | + 00:16 | + 00:27 | +1 00:44 | -2 | ||
| 182 | bobby285272 | 6 | 120 | + 00:03 | + 00:06 | + 00:11 | + 00:15 | + 00:24 | + 01:01 | -2 | ||
| 183 | harshmodi278 | 6 | 123 | + 00:03 | + 00:06 | + 00:15 | + 00:21 | + 00:28 | +1 00:40 | -4 | ||
| 183 | Djoludi | 6 | 123 | + 00:05 | + 00:07 | + 00:15 | + 00:20 | + 00:30 | + 00:46 | -1 | ||
| 185 | amiable99 | 6 | 125 | + 00:03 | + 00:05 | + 00:13 | + 00:16 | + 00:39 | + 00:49 | -3 | ||
| 186 | rishu_1234 | 6 | 126 | + 00:04 | + 00:08 | + 00:13 | + 00:20 | + 00:31 | + 00:50 | -2 | ||
| 186 | singhkanishk7777 | 6 | 126 | + 00:05 | + 00:08 | + 00:14 | + 00:20 | + 00:34 | + 00:45 | |||
| 188 | hironeko99 | 6 | 129 | + 00:04 | + 00:07 | + 00:14 | + 00:20 | + 00:30 | +1 00:44 | |||
| 189 | JinTianHao | 6 | 130 | + 00:07 | + 00:12 | + 00:17 | + 00:21 | + 00:26 | + 00:47 | -2 | ||
| 189 | NifiMao | 6 | 130 | + 00:02 | + 00:04 | + 00:08 | + 00:12 | + 00:19 | +2 01:05 | -1 | ||
| 191 | harshit_1808 | 6 | 131 | + 00:05 | + 00:08 | + 00:14 | + 00:20 | + 00:31 | + 00:53 | -4 | ||
| 192 | the_tester_ | 6 | 134 | + 00:04 | + 00:07 | + 00:12 | + 00:20 | + 00:39 | + 00:52 | -1 | ||
| 193 | Sacrifar | 6 | 135 | + 00:06 | + 00:11 | + 00:19 | + 00:22 | + 00:30 | + 00:47 | -5 | ||
| 194 | Mmijan | 6 | 139 | + 00:04 | + 00:07 | + 00:15 | + 00:24 | + 00:33 | + 00:56 | -1 | ||
| 195 | botko | 6 | 140 | + 00:05 | + 00:10 | + 00:17 | + 00:26 | + 00:35 | + 00:47 | -1 | ||
| 195 | 5130 | 6 | 140 | + 00:08 | + 00:22 | + 00:28 | + 00:04 | + 00:20 | + 00:58 | -1 | ||
| 195 | Nishu09 | 6 | 140 | + 00:03 | + 00:07 | + 00:13 | + 00:18 | + 00:31 | + 01:08 | -2 | ||
| 198 | veteran_ | 6 | 142 | + 00:02 | + 00:04 | + 00:09 | + 00:12 | + 00:23 | +2 01:12 | -4 | ||
| 198 | anti-social | 6 | 142 | + 00:04 | + 00:06 | + 00:14 | + 00:22 | + 00:27 | -1 | + 01:09 | ||
| 200 | bunbun1 | 6 | 145 | + 00:03 | + 00:07 | + 00:12 | + 00:22 | + 00:40 | + 01:01 | -4 | ||
|
Accepted
Tried |
9338 9651 |
9520 9612 |
7615 8805 |
5312 7588 |
5197 5497 |
933 1839 |
282 1028 |
77 133 |


Class: Aws::Lex::Types::PutSessionResponse
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Struct
|
|
|
Instance Chain:
self,
::Aws::Structure ,
Struct
|
|
| Inherits: |
Struct
|
| Defined in: | gems/aws-sdk-lex/lib/aws-sdk-lex/types.rb |
Overview
Constant Summary
-
SENSITIVE =
# File 'gems/aws-sdk-lex/lib/aws-sdk-lex/types.rb', line 1534[:, :, :active_contexts]
Instance Attribute Summary
-
#active_contexts ⇒ String
rw
A list of active contexts for the session.
-
#audio_stream ⇒ IO
rw
The audio version of the message to convey to the user.
-
#content_type ⇒ String
rw
Content type as specified in the
Accept
HTTP header in the request. -
#dialog_state ⇒ String
rw
ConfirmIntent
- Amazon Lex is expecting a "yes" or "no".
-
#encoded_message ⇒ String
rw
The next message that should be presented to the user.
-
#intent_name ⇒ String
rw
The name of the current intent.
-
#message ⇒ String
rw
The next message that should be presented to the user.
-
#message_format ⇒ String
rw
The format of the response message.
-
#session_attributes ⇒ String
rw
Map of key/value pairs representing session-specific context information.
-
#session_id ⇒ String
rw
A unique identifier for the session.
-
#slot_to_elicit ⇒ String
rw
If the
dialogState
isElicitSlot
, returns the name of the slot for which Amazon Lex is eliciting a value. -
#slots ⇒ String
rw
Map of zero or more intent slots Amazon Lex detected from the user input during the conversation.
Instance Method Summary
::Aws::Structure
- Included
| #to_hash | Alias for Structure#to_h. |
Instance Attribute Details
#active_contexts ⇒ String
(rw)
A list of active contexts for the session.
# File 'gems/aws-sdk-lex/lib/aws-sdk-lex/types.rb', line 1521
class PutSessionResponse < Struct.new( :content_type, :intent_name, :slots, :session_attributes, :, :, :, :dialog_state, :slot_to_elicit, :audio_stream, :session_id, :active_contexts) SENSITIVE = [:, :, :active_contexts] include Aws::Structure end
#audio_stream ⇒ IO
(rw)
The audio version of the message to convey to the user.
# File 'gems/aws-sdk-lex/lib/aws-sdk-lex/types.rb', line 1521
class PutSessionResponse < Struct.new( :content_type, :intent_name, :slots, :session_attributes, :, :, :, :dialog_state, :slot_to_elicit, :audio_stream, :session_id, :active_contexts) SENSITIVE = [:, :, :active_contexts] include Aws::Structure end
#content_type ⇒ String
(rw)
Content type as specified in the Accept
HTTP header in the
request.
# File 'gems/aws-sdk-lex/lib/aws-sdk-lex/types.rb', line 1521
class PutSessionResponse < Struct.new( :content_type, :intent_name, :slots, :session_attributes, :, :, :, :dialog_state, :slot_to_elicit, :audio_stream, :session_id, :active_contexts) SENSITIVE = [:, :, :active_contexts] include Aws::Structure end
#dialog_state ⇒ String
(rw)
ConfirmIntent
- Amazon Lex is expecting a "yes" or "no" response to confirm the intent before fulfilling an intent.ElicitIntent
- Amazon Lex wants to elicit the user's intent.ElicitSlot
- Amazon Lex is expecting the value of a slot for the current intent.Failed
- Conveys that the conversation with the user has failed. This can happen for various reasons, including the user does not provide an appropriate response to prompts from the service, or if the Lambda function fails to fulfill the intent.Fulfilled
- Conveys that the::Aws::Lambda
function has sucessfully fulfilled the intent.ReadyForFulfillment
- Conveys that the client has to fulfill the intent.
# File 'gems/aws-sdk-lex/lib/aws-sdk-lex/types.rb', line 1521
class PutSessionResponse < Struct.new( :content_type, :intent_name, :slots, :session_attributes, :, :, :, :dialog_state, :slot_to_elicit, :audio_stream, :session_id, :active_contexts) SENSITIVE = [:, :, :active_contexts] include Aws::Structure end
#encoded_message ⇒ String
(rw)
The next message that should be presented to the user.
The encodedMessage
field is base-64 encoded. You must decode the
field before you can use the value.
# File 'gems/aws-sdk-lex/lib/aws-sdk-lex/types.rb', line 1521
class PutSessionResponse < Struct.new( :content_type, :intent_name, :slots, :session_attributes, :, :, :, :dialog_state, :slot_to_elicit, :audio_stream, :session_id, :active_contexts) SENSITIVE = [:, :, :active_contexts] include Aws::Structure end
#intent_name ⇒ String
(rw)
The name of the current intent.
# File 'gems/aws-sdk-lex/lib/aws-sdk-lex/types.rb', line 1521
class PutSessionResponse < Struct.new( :content_type, :intent_name, :slots, :session_attributes, :, :, :, :dialog_state, :slot_to_elicit, :audio_stream, :session_id, :active_contexts) SENSITIVE = [:, :, :active_contexts] include Aws::Structure end
#message ⇒ String
(rw)
The next message that should be presented to the user.
You can only use this field in the de-DE, en-AU, en-GB, en-US,
es-419, es-ES, es-US, fr-CA, fr-FR, and it-IT locales. In all other
locales, the message
field is null. You should use the
encodedMessage
field instead.
# File 'gems/aws-sdk-lex/lib/aws-sdk-lex/types.rb', line 1521
class PutSessionResponse < Struct.new( :content_type, :intent_name, :slots, :session_attributes, :, :, :, :dialog_state, :slot_to_elicit, :audio_stream, :session_id, :active_contexts) SENSITIVE = [:, :, :active_contexts] include Aws::Structure end
#message_format ⇒ String
(rw)
The format of the response message. One of the following values:
PlainText
- The message contains plain UTF-8 text.CustomPayload
- The message is a custom format for the client.SSML
- The message contains text formatted for voice output.Composite
- The message contains an escaped JSON object containing one or more messages from the groups that messages were assigned to when the intent was created.
# File 'gems/aws-sdk-lex/lib/aws-sdk-lex/types.rb', line 1521
class PutSessionResponse < Struct.new( :content_type, :intent_name, :slots, :session_attributes, :, :, :, :dialog_state, :slot_to_elicit, :audio_stream, :session_id, :active_contexts) SENSITIVE = [:, :, :active_contexts] include Aws::Structure end
#session_attributes ⇒ String
(rw)
Map of key/value pairs representing session-specific context information.
# File 'gems/aws-sdk-lex/lib/aws-sdk-lex/types.rb', line 1521
class PutSessionResponse < Struct.new( :content_type, :intent_name, :slots, :session_attributes, :, :, :, :dialog_state, :slot_to_elicit, :audio_stream, :session_id, :active_contexts) SENSITIVE = [:, :, :active_contexts] include Aws::Structure end
#session_id ⇒ String
(rw)
A unique identifier for the session.
# File 'gems/aws-sdk-lex/lib/aws-sdk-lex/types.rb', line 1521
class PutSessionResponse < Struct.new( :content_type, :intent_name, :slots, :session_attributes, :, :, :, :dialog_state, :slot_to_elicit, :audio_stream, :session_id, :active_contexts) SENSITIVE = [:, :, :active_contexts] include Aws::Structure end
#slot_to_elicit ⇒ String
(rw)
If the dialogState
is ElicitSlot
, returns the name of the slot
for which Amazon Lex is eliciting a value.
# File 'gems/aws-sdk-lex/lib/aws-sdk-lex/types.rb', line 1521
class PutSessionResponse < Struct.new( :content_type, :intent_name, :slots, :session_attributes, :, :, :, :dialog_state, :slot_to_elicit, :audio_stream, :session_id, :active_contexts) SENSITIVE = [:, :, :active_contexts] include Aws::Structure end
#slots ⇒ String
(rw)
Map of zero or more intent slots Amazon Lex detected from the user input during the conversation.
Amazon Lex creates a resolution list containing likely values for a
slot. The value that it returns is determined by the
valueSelectionStrategy
selected when the slot type was created or
updated. If valueSelectionStrategy
is set to ORIGINAL_VALUE
, the
value provided by the user is returned, if the user value is similar
to the slot values. If valueSelectionStrategy
is set to
TOP_RESOLUTION
Amazon Lex returns the first value in the
resolution list or, if there is no resolution list, null. If you
don't specify a valueSelectionStrategy
the default is
ORIGINAL_VALUE
.
# File 'gems/aws-sdk-lex/lib/aws-sdk-lex/types.rb', line 1521
class PutSessionResponse < Struct.new( :content_type, :intent_name, :slots, :session_attributes, :, :, :, :dialog_state, :slot_to_elicit, :audio_stream, :session_id, :active_contexts) SENSITIVE = [:, :, :active_contexts] include Aws::Structure end


Recent Changes in English
The changes of this version in English.
Recent Changes in Farsi
The changes of this version in Farsi.
Cancel
Start Uploading
Proccessing uploaded file...
The app deployment was successful
Done
Unfortunately the app deployment failed
Cancel
Retry


Elkwood Construction Ltd. is a licensed pre-paid general contracting company serving Calgary and the province of Alberta. We are a full service company providing over 22 years of knowledge and expertise within the construction industry. Our speciality is high end residential renovations, basement developments, exterior decking and fencing. We have WCB and Liability Insurance coverage. We have experience dealing directly with Architects, Interior Designers, Engineers and directly with the homeowner.
The owner, Tom Searle, is a Red Seal Journeyman Carpenter and has developed an extensive network of sub-trades that take the same pride in their work as we do. This ensures the quality of craftsmanship and consistent level of finishing throughout the construction process. We deal directly with suppliers, manufacturers and wholesalers ensuring that you get the best price possible.


{what-is-cmints[Page heading] What is CMintS ?}
{what-is-cmints-p[Paragraph in 'What is CMintS' section]
{Curly-brackets curly { & } brackets}
{what-is-cmints-p[Paragraph in 'What is CMintS' section]
{Curly-brackets curly { & } brackets}


DRAFT: 20-Nov-96
Protocols and Services
Netscape
Custom Apps
World Wide Web
File Transfer
Mail
Custom Protocols
Internet
(TCP/IP)
Ethernet
Applications
Services
Protocols


Even more websites all about websites templates on Just Web Templates.
If you are looking for beautiful and professionally made templates you can find them at Just Web Templates.
You can remove any link to our website from this template you're free to use the templates without linking back to us.


Type or paste input JSON into this field and click Run model below.
The result of the model run is displayed below.


Constraint:
The state of being restricted or confined within prescribed bounds. Constraints are what is not there but could have been.
The concept of constraint is, in effect, a complementary concept to order, habit, and organization because something that is ordered or organized is restricted in its range and/or dimensions of variation, and consequently tends to exhibit redundant features or regularities.
A dynamical system is constrained to the extent that it is restricted in degrees of freedom to change and exhibits attractor tendencies.
Constraints can originate intrinsic or extrinsic to the system that is thereby constrained
more similar = less different
constraints can be extrinsic or intrinsic p192
constraint is reduced variety, therefore there will be more redundancy (repetition of similar events) in attributes. p 192
indivuation: constraints are precisely measurable in space and time.
extension: constraints can have definite extension across both space and time, and across whole ensembles of elements and interactions.
bottom-up notion of causality is limited p 201
reduction of options at one level can lead to an even greater reduction of options in a process that depends on the first
while it may often be possible to model constraint propagation and thus make general predictions about the emergence of higher-order dynamical constraints, it may not be possible to work backwards. p205
Asymmetry: You can reduce, but you cannot unreduce
An increase in entropy is a decrease in constraint and vice versa. In any given interaction, the global level of constraint can only decrease. p228
this chapter goal: what is absent has causal power of organization and asymetric dynamics of physical or loving??? process
In statistical mechanics, constraint is a technical term used to describe some reduction of degrees of freedom of change or a restriction on the variation of properties that is less than what is possible. In colloquial terms, constraint tends to be understood as an external limitation, reflecting some extrinsically imposed factor that reduces possibilities or options.
Deacon, Terrence W. (2011-11-14). Incomplete Nature: How Mind Emerged from Matter (p. 192). Norton. Kindle Edition.
p197??
two cases of dynamical conditions:
microscopic cause little change to macroscopic - near-equilibrium thermodynamic processes
microscopic can cause change to macroscopic - persistent far-from equilibrium thermodynamic processes
Here look at 1 only. 2 in chapter 8
component micro interactions: faster than interactions with systems
return to stable near-equilibrium much faster
highest probability will correlate with most redundant effects
fluctuations cancel each other out
most generalized attractor features end up have causal influence.
only most redundant features manifest at higher level


Pure CSS Fancy Checkbox/Radio
Radio Buttons
Check this
... or this...
or maybe this
Checkbox
Check this
... and this...
and maybe this


io.gearpump
A reporter class for logging metrics values to a remote actor periodically
sampleRate: take a data point for every sampleRate...
Will aggregate a full set of metrics into a smaller set
Sub Class must implement a constructor with signature like this: MetricsAggregator(config: Config)
Will aggregate a full set of metrics into a smaller set
Sub Class must implement a constructor with signature like this: MetricsAggregator(config: Config)


Getting Started with ArgoCD on Kubernetes
Tony Vetter
ArgoCD is a declarative GitOps tool built to deploy applications to Kubernetes. While the continuous delivery (CD) space is seen by some as crowded these days, ArgoCD does bring some interesting capabilities to the table.
Unlike other tools, ArgoCD is lightweight and easy to configure. It is purpose-built to deploy applications to Kubernetes so it doesn’t have the UI overhead of many tools built to deploy to multiple locations.
It was also built with a GitOps flow in mind. That means everything ArgoCD sees as its source of truth is stored in a repository, which makes permissions and access control easier to handle since no one can change files locally to impact the behavior of ArgoCD. It also increases security by not storing any of these configuration files locally.
And it’s fast! After using it I am sure you will agree that ArgoCD is very performant. It feels like a native, local application even though it’s running distributed microservices on Kubernetes.
In this guide, you will install ArgoCD onto Kubernetes. Then you will configure ArgoCD to pull Kubernetes configuration files from GitHub, and a Docker image to run from Docker Hub. Then you will “sync” that image to another Kubernetes cluster.
Ready to get started? Here you go!
Prerequisites
Before you get started, you will need to do a number of things.
- Install Minikube: You will use Minikube to build the Kubernetes clusters referenced in this guide. Other options for running local Kubernetes clusters may also work but have not been tested in this guide.
- Install kubectl: If you have worked with Kubernetes before, you likely already have kubectl installed. If not, you will need it to manage your clusters, as well as give ArgoCD a way to connect to them through the kubeconfig file.
- Install Docker and log in (optional): If you choose, there are some optional steps in this guide for building your own demo application. To perform these steps, you will use Docker to build and push your container to Docker Hub.
- Have a DockerHub account (optional): As discussed above, if you choose to go through the optional steps, you will need a Docker Hub account to push your container to.
- Set aside 10-15 minutes: About how long this guide will take to complete unless you do the optional steps.
Create the Kubernetes clusters
Once you have these config files, the next step is to create two Kubernetes clusters: On one, you will install ArgoCD; the other is where you will push your application and run it.
You will use Minikube to create these clusters. Other options may work, but Minikube is an easy tool for creating multiple clusters without too much troubleshooting when it comes to managing ingress and external connections.
First, start the target Kubernetes cluster.
minikube start -p target-k8s
Then, start the cluster on which you will install ArgoCD.
minikube start -p argocd-k8s
In the next section, you will be working on the argocd-k8s
cluster to complete the install of ArgoCD. Because of the order you created these clusters in, your kubectl context
should already be pointed at this cluster, but it’s good to be sure. The following will confirm that your context is set correctly.
kubectl config use-context argocd-k8s
Optional: Download the git repo
As the “Getting Started” documentation from ArgoCD will show, the install process is very straightforward (much of this guide uses commands found there). Even so, you will still need some configuration files to get your pipeline to start delivering applications to production.
Rather than creating everything from scratch, the environment has been created for you. Look through these files and understand their function. If you have some experience with Kubernetes configuration files, they will be fairly straightforward.
To make this viewing easier, you may decide to clone the repo locally. You will not be changing these files in this guide, as ArgoCD pulls them directly from the repository.
git clone https://github.com/anthonyvetter/argocd-getting-started.git && cd argocd-getting-started
You will have the option of creating these environments using your own GitHub and Docker Hub images later in this post, but it’s not required to get started.
Install ArgoCD
Now that you have created your Kubernetes clusters, you can start the install process. It’s really just two commands. The first is to create a namespace where you will install ArgoCD.
kubectl create namespace argocd
The second—and mostly final step—is to apply this script from the ArgoCD team, which will take care of the rest.
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
This command will complete quickly, but pods will still be spinning up on the back end. These need to be in a running state before you can move forward. Use the watch command to ensure the pods are running and ready.
watch kubectl get pods -n argocd
Troubleshooting: I and several others have run into an issue at this step, where pods will enter a CrashLoopBackOff
or ImgPullError
state. These install steps are exactly the same as on the ArgoCD “Getting Started” guide. If it happens to you, know that I had good luck simply using Minikube to stop and start the Kubernetes cluster again and retrying.
Once the pods are ready, ArgoCD will be running. But it will not be accessible from outside the cluster. Since this is a demo environment, use port-forward to expose a port to the service, and forward it to localhost
.
kubectl port-forward svc/argocd-server -n argocd 8080:443
Once run, your ArgoCD cluster will be available at https://localhost:8080. Since you didn’t deploy any certificates, you will need to accept your browser’s certificate exception. The port-forward
command will also now be running in the foreground of your terminal. Open another terminal window or tab and cd back into the working directory.
In the UI, you will not be able to log in yet. ArgoCD uses the unique name of its server pod as a default password, so every installation will be different. Pretty clever! The following command will list the pods and format the output to provide just the line you want. It will have the format argocd-server-<number>-<number>
.
kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2
To log in to the ArgoCD UI, the default username is admin
and the default password is the output of the above command. Save this password; you will need it for the next step of installing and configuring the ArgoCD command-line agent.
At this stage, take some time to familiarize yourself with the ArgoCD UI. While the rest of the steps in this guide can be done either through the UI or the CLI, you will be using the CLI.
Install and set up the ArgoCD CLI
There are two primary methods for installing the ArgoCD CLI tool. If you are on a Mac computer running brew, there is a tap for argocd. Otherwise, you will need to install the binary from here.
To install with brew:
brew tap argoproj/tap && brew install argoproj/tap/argocd
To install the binary: First, you need to confirm the version of ArgoCD you are running. The script does install the latest stable version, but it’s good to ensure version compatibility. Log in to the ArgoCD UI. In the upper left-hand corner, you will see the ArgoCD squid, and underneath that, you will see the major version listed. Hovering your cursor over it will show the full version string.
Then go to the releases page on the ArgoCD GitHub site and find the version associated with your ArgoCD version. Under the Assets section, download the argocd version appropriate for your platform.
Once downloaded, rename the file and move it into your $PATH
. Modify this command for your platform.
mv argocd-darwin-amd64 argocd && mv argocd /usr/local/bin
Now that the argocd
client is installed, you can log it into your ArgoCD installation. Use the password from the previous section.
argocd login localhost:8080
Note: Again, as with the UI, you will need to accept the server certificate error.
Optional step: You can change your password at this stage if you like. This command will prompt you for your current password, your new password, then to confirm that new password.
argocd account update-password
You are now almost ready to deploy your application. But first you need to tell ArgoCD about your deployment target. By default, if you do not add an additional Kubernetes cluster target, ArgoCD will deploy applications to the cluster on which it is installed. To add your target Kubernetes cluster to ArgoCD, use the following:
argocd cluster add target-k8s
This will add an ArgoCD service account onto the cluster, which will allow ArgoCD to deploy applications to it.
Optional: The demo application
For an application to deploy, you are going to be using spring-petclinic. It’s an application that is pretty easy to understand, and packaged into a container to run on Kubernetes. It’s been packaged already on a public DockerHub repo. No steps are required in this guide to package your own. You will configure ArgoCD to pull this image.
Optional steps: You may, at some point, want to create your own container to pull from your own registry. It is recommended that you run through this guide once as-is so you understand how things work in ArgoCD. But if you are ready to package your own application, these are the steps.
Within the optional directory of the GitHub repo you cloned, there is a Dockerfile for building spring-petclinic. To build it, run the following:
docker build optional/. -t spring-petclinic
This Dockerfile uses Maven to package the application in an OCI container image; it will take some time to run. In the end, you will have a container on your local system called spring-petclinic.
To push this container to DockerHub, first tag your container. Modify this command and the next to add your DockerHub username.
docker tag spring-petclinic <your-dh-username>/spring-petclinic:latest
Then push your container to Docker Hub.
docker push <your-dh-username>/spring-petclinic
The configuration files you may have cloned earlier are still written to call from my DockerHub account. And if you have run through this guide once already, you know that ArgoCD pulls those files directly from GitHub (modifying them locally will have no effect on this behavior).
There are many methods to create your own configuration files for ArgoCD, but the easiest is probably to fork my repository into your own, then modify the deployment.yml
to pull the image from your DockerHub account. You will then need to modify the later argo app create
flags in the next section to use your GitHub repo.
Add your app to ArgoCD
You are now ready to add your application to ArgoCD to monitor and push to your target. But first you need to set up a couple of environment variables so as to make some of the following commands a little easier.
This variable will tell the argocd CLI client where our ArgoCD installation resides. It gets the cluster information from your kubectl context, but it needs the namespace. Without setting this variable, you will need to add the --port-forward-namespace
flag to all commands run with argocd.
export ARGOCD_OPTS='--port-forward-namespace argocd'
This variable you will use to tell ArgoCD where your target cluster API URL is.
export MINIKUBE_IP=https://$(minikube ip -p target-k8s):8443
With these variables set, use argocd to create the application record. Here you are telling ArgoCD to pull in configuration files from my GitHub repository, and that the files are in the root directory. Then you are telling it to deploy that application onto your target cluster, in the default namespace.
argocd app create spring-petclinic --repo https://github.com/anthonyvetter/argocd-getting-started.git --path . --dest-server $MINIKUBE_IP --dest-namespace default
Once this completes, you can see the status and configuration of your app by running the following:
argocd app list
Notice the STATUS: OutOfSync
and HEALTH: Missing
. That’s because ArgoCD creates applications with manual triggers by default. Automated triggers are available and are straightforward to configure, but in this guide , you will stick with manual triggers in order to go through the process slowly.
“Sync” is the terminology ArgoCD uses to describe the application on your target cluster as being up to date with the sources ArgoCD is pulling from. You have set up ArgoCD to monitor the GitHub repository with the configuration files as well as the spring-petclinic container image in Docker Hub. Once the initial sync is completed, a change to either of these sources will cause the status in ArgoCD to change to OutOfSync
.
For a more detailed view of your application configuration, run:
argocd app get spring-petclinic
Now you are ready to sync your application to your target cluster. To do this, simply use the sync command for your application:
argocd app sync spring-petclinic
Once completed, your target Kubernetes cluster will be creating the pod on which spring-petclinic will be running. But as with ArgoCD, the UI will not be available outside the cluster. To forward a port, you first need to change kubectl contexts to your target cluster.
kubectl config use-context target-k8s
Note: Since the argocd CLI client uses your kubectl context to connect to your cluster, any argocd commands you run from this point won’t work. You will need to change contexts back to your argocd-k8s cluster to manage ArgoCD.
Now simply forward the port as you did for the ArgoCD UI. Once completed, spring-petclinic will be available at http://localhost:9090.
kubectl port-forward svc/spring-petclinic -n default 9090:8080
And there you have it! You have a running application deployed to Kubernetes with ArgoCD. For further learning, try setting up your own environment using the optional steps provided throughout this guide. Find out how to set up automated triggers, and maybe configure ArgoCD with your own custom Kubernetes application. Finally, look at adding ArgoCD into your CI/CD pipeline and deploying applications into external Kubernetes environments.
For further learning, the Operator Manual from ArgoCD is a terrific resource. If you want to look at developing a third-party integration for ArgoCD, see the Developer Guides.
Frequently Asked Questions
How do you install ArgoCD on Kubernetes?
kubectl create namespace argocd
. Finally, apply the script kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
to finish the install.What are the benefits of using ArgoCD on Kubernetes?
How do you install ArgoCD CLI?
brew
, where there is a tap for ArgoCD. Otherwise, the binary will need to be installed by navigating to ArgoCD releases page, installing the correct version appropriate for your platform, renaming the file, modifying the command, logging in, and deploying your application.How do you deploy apps to ArgoCD in Kubernetes?
argocd cluster add target-k8s
, then configure ArgoCD to pull the image using spring-petclinic. Finally, push your container to DockerHub and create your own configuration files, or fork our repository into your own.