The Good:
Christmas day marked one month living full-time in our Airstream. So far, we are loving this lifestyle change. We’ve had our share of challenges, but since officially starting we’ve experienced so much more in a month than we would have in a year of our traditional lifestyle.
New Places
In our first month, we hit 5 locations in 4 states. Each time we arrived in a new place, we couldn’t get over that in one Sunday we could pack up, drive, unpack and setup, and be walking around in a completely different state by sundown. We have seen way more landscape changes each week than we’re used to commuting to work every day in North Carolina.
New Faces
When we started, I was worried we may be isolated and I would struggle feeling connected with new people as well as friends and family back home. While the latter is still true to a certain extent, being isolated couldn’t be further from the truth! We have met so many people, many of which we immediately have RVing in common with. My fears of not meeting new friends on the road have disappeared. As an extrovert, my “need for people” tank is not in danger of being empty :). Nick as an introvert can recharge in the Airstream, then to socialize he merely has to go for a walk! Honestly, we probably talk to more people in a day now than we did previously.
New experiences
We have never spent so much time outside as we have in the past month. We never kayaked or hiked much before, but we’ve been super active doing both lately. We’ve also never been so connected to our water usage, sewage, food waste, etc. We also plan to get scuba certified while we’re in Florida which we’re both pretty pumped about!
Marriage relationship growth
I could get sappy here, because Nick and I truly love going through life together. But I’ll stop there and spare you haha… We’ve been married for 3 years, and we’ve learned a lot about one another as we’ve tackled all of life’s challenges. One of these current challenges is living and working together in a shared 200 square foot space :) Although we love spending time with one another, being together 24/7 is a lot for any two people, so we’ve gotten purposeful about giving one another space and time to go off on solo adventures at least once a week. Nick may go fishing on his kayak or work from a different location while I may go to a coffee shop, go for a run, or explore whatever town we’re in .
When you’re RVing with another person, teamwork is incredibly important. Things like backing the trailer into a spot, dealing with miscellaneous issues that come up (for us the main one was battery issues), and moving days come to mind. On moving days, Nick and I each have our own tasks we’re responsible for which creates a great system that gets us out quickly with everything ready to rock and roll. Knowing the importance of getting everything right before you get on the road can be an automatic attitude adjustment. You can’t afford to be grumpy with your spouse when your home is at stake!
To us, being willing to work on yourself and not always point the finger at the other person (as well as being able to laugh at yourself and one another) is the key to a strong relationship. Because we are both adjusting to life on the road, our first month of full-time RVing has reminded us of the need to put the other person above ourselves more than ever!
Mindset growth
In reflecting on the past month, in my opinion the single most important thing to have when rving full-time is a good mindset. Flexibility, and a positive, can-do attitude can change the tone of your trip. Because sometimes you really don’t know where you will be or what will happen next. You can try to do everything right and plan ahead, but things will still go wrong! If you have the right attitude, you can deal with whatever comes your way without it ruining your day or your trip.
 Nick was sick for the full first couple of months with multiple colds, a sinus infection, and possibly some walking pneumonia. He felt pretty bad. But he still worked full time, helped with moving days, and tried to stay active on days he felt decent. This did put a bit of a damper on the beginning of the trip for both of us, but we knew it was temporary.
Adjusting to a small living space
I (Caitlyn) do a little better in small spaces than Nick does, but in his defense he is an active 6’4’’ guy who doesn’t fit as well inside the Airstream as I do. After a couple months however, we’ve both adjusted to the space and after a few positive changes are living happily together in 200 square feet:
- The first challenge was the dogs. They didn’t have many boundaries initially, and being “velcro dogs” they would climb all over us on the seats and beds of the Airstream all day and night. So we decided to make some changes. Now they are only allowed on the beds when invited, and are not allowed on the seats/couches. So most of the time they are on their own fluffy beds on the floor. They’re still happy as larks and still get their fill of mom cuddles each day :) But we don’t feel like they’re all over us all the time.
- We should have had a truck cap before we started. We’re uncomfortable leaving almost anything in the truck bed exposed, so it’s all in the Airstream. Under the table so we can’t sit there. Yeah, it’s been a problem. So we’ve expedited our search for a truck cap and are super excited to be able to load that long bed truck up to clear our living space up!!
- Getting cooped up is something that happens to both of us. When you’re working on a laptop all day in the Airstream, when 5pm comes around you can’t help but be extremely antsy. The easy fix here, change your surroundings and stay active! Most likely, you’re in a cool new spot to explore. With mobile hotspots, we can essentially work from anywhere with cell service so we try to take advantage of that! We have yet to get in a good exercise groove, but we’re working on it. And if nothing else, we at least go for long walks at the end of the day.
Laundry
Where to put the dirty laundry hamper is a tough question in an Airstream. Let me know if you have ideas. We usually keep it in the shower, which is fine but is annoying when you actually need to use the shower :) Also, laundromats are not my favorite because well, you just don’t know what people are washing in those machines. Bleh. However, if you can find a good laundromat it is glorious because you are getting all your laundry done at one time. So that hasn’t been too shabby.
Rain
Rainy days in an RV aren’t fun. Your floor gets muddy (especially with two fur babies), you have to make sure everything in the truck bed and not under the awning is safe and dry - again a truck cap is going to be GLORIOUS - and you can’t get outside as much. The good thing is… you can check the forecast and avoid staying somewhere that’s rainy!!
Initial Spending Was More Than We're Comfortable With
Finally, we seem to have been bleeding money lately. Both of us are savers and I’m the budgeter, so seeing everything we’ve been spending on has been a bit painful. That being said, RVing can be as inexpensive or expensive as you want it to be. However, there are things starting out that you realize will improve your experiences. That’s where we find ourselves being sucked in. After two months, here are our largest purchases:
- GoPro
- DSLR Camera
- Kayaks
- Generator
- Verizon Unlimited Data Plan and Mifi
- AT&T Unlimited Data Plan
- Truck Cap
- In the market for cell phone booster/antennae
- In the market for a truck grille guard
Conclusion
Overall, in the past couple of months the good has far outweighed the bad just as we expected. Sure, we knew there would be challenges when transitioning to a mobile, tiny lifestyle. But we also knew the new places, experiences, and people along the way would grow us in ways we couldn't imagine. No regrets here so far!!


FARGO 1996 A film review by Timothy Voon Copyright 1997 Timothy Voon 3 :-) :-) :-) for superb acting, writing and direction 2 :-( :-( for disturbing subject material
Cast: William H. Macy, Steve Buscemi, Frances McDormand, Peter Stormare, Harve Presnell Director: Joel Coen Producer: Ethan Coen Screenplay: Joel and Ethan Coen
So the Coen brothers get this idea for a picture about real life, yah. It's about life in Minnesota where everybody speaks like this, yah. It's very cold, and people are a bit strange, yah. So this car sales man wants to get some money from his mean father-in-law. So he gets two bad men to kidnap his wife for money, yah. These bad men go crazy or something and start killing everyone, yah. Sounds like fun, yah, but it's real sick. We have a great female sheriff and she's having a baby, yah.  She's having a baby so she likes to eat a lot. Anyway she is looking into these dead bodies, and she's real smart, yah. Smarter than them bad guys. Her name is Frances McDormand, yah and she gets chosen for one of these golden men things, and wins it yah.  I felt like throwing up when the wood machine thing was used for something real bad and naughty, yah. But otherwise it's real smart looking and the people get to say smart things if they aren't being killed, yah.
Comment: Far out, Far off, Fargo, yah.
Timothy Voon e-mail<EMAIL_ADDRESS>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


Description: Load data from the server and place the returned HTML into the matched element.
url: String A string containing the URL to which the request is sent.
data: Map, String A map or string that is sent to the server with the request.
complete(responseText, textStatus, XMLHttpRequest): Function() A callback function that is executed when the request completes.
Note: The event handling suite also has a method named
.load()
. jQuery determines which method to fire based on the set of arguments passed to it.
This method is the simplest way to fetch data from the server. It is roughly equivalent to $.get(url, data, success)
except that it is a method rather than global function and it has an implicit callback function. When a successful response is detected (i.e. when textStatus
is "success" or "notmodified"), .load()
sets the HTML contents of the matched element to the returned data. This means that most uses of the method can be quite simple:
$('#result').load('ajax/test.html');
If a "complete" callback is provided, it is executed after post-processing and HTML insertion has been performed. The callback is fired once for each element in the jQuery collection, and this
is set to each DOM element in turn.
$('#result').load('ajax/test.html', function() {
alert('Load was performed.');
});
In the two examples above, if the current document does not contain an element with an ID of "result," the .load()
method is not executed.
The POST method is used if data is provided as an object; otherwise, GET is assumed.
The .load()
method, unlike $.get()
, allows us to specify a portion of the remote document to be inserted. This is achieved with a special syntax for the url
parameter. If one or more space characters are included in the string, the portion of the string following the first space is assumed to be a jQuery selector that determines the content to be loaded.
We could modify the example above to use only part of the document that is fetched:
$('#result').load('ajax/test.html #container');
When this method executes, it retrieves the content of ajax/test.html
, but then jQuery parses the returned document to find the element with an ID of container
. This element, along with its contents, is inserted into the element with an ID of result
, and the rest of the retrieved document is discarded.
jQuery uses the browser's .innerHTML
property to parse the retrieved document and insert it into the current document. During this process, browsers often filter elements from the document such as
, <title>
, or
elements. As a result, the elements retrieved by .load()
may not be exactly the same as if the document were retrieved directly by the browser.
When calling .load()
using a URL without a suffixed selector expression, the content is passed to .html()
prior to scripts being removed. This executes the script blocks before they are discarded. If .load()
is called with a selector expression appended to the URL, however, the scripts are stripped out prior to the DOM being updated, and thus are not executed. An example of both cases can be seen below:
Here, any JavaScript loaded into #a
as a part of the document will successfully execute.
$('#a').load('article.html');
However, in the following case, script blocks in the document being loaded into #b
are stripped out and not executed:
$('#b').load('article.html #target');
<!DOCTYPE html>

Footer navigation:

<!DOCTYPE html>

Successful Response (should be blank):

Error Response:

$("#feeds").load("feeds.html");

45 feeds found.

$("#objectID").load("test.php", { 'choices[]': ["Jon", "Susan"] } );
$("#feeds").load("feeds.php", {limit: 25}, function(){
alert("The last 25 entries in the feed have been loaded");
});


---
layout: page
weight: 0
title: Customer Management
seo:
robots: NOINDEX, FOLLOW
navigation:
show: true
---
These are actions that directly affect your customer. We provide access via XML and JSON.
{% anchor h2 %}
Create a Customer
{% endanchor %}
| Parameter |
Required |
Requirements |
Description |
| username |
Yes |
No more than 64 characters |
The customers new username |
| password |
Yes |
Must be at least 6 characters |
New password of customer |
| confirm_password |
Yes |
Must match password parameter, must be at
least 6 characters |
Confirm new password |
| email |
Yes |
Must be in email format, no more than 64
characters |
Email address of new customer |
| first_name |
Yes |
No more than 50 characters |
First name of new customer |
| last_name |
Yes |
No more than 50 characters |
Last name of new customer |
| address |
Yes |
No more than 100 characters |
Address of new customer |
| city |
Yes |
No more than 100 characters |
City of new customer |
| state |
Yes |
No more than 100 characters |
State of new customer |
| zip |
Yes |
No more than 50 characters |
Zip of new customer. This field is not
validated for correct value. It's up to developer to check for valid
zip code. |
| country |
Yes |
No more than 100 characters |
Country of new customer |
| phone |
Yes |
No more than 50 characters |
Phone number of new customer |
| website |
Yes |
No more than 255 characters |
Website of new customer |
| company |
Yes |
No more than 255 characters |
Company of new customer |
| package |
Yes |
No more than 255 characters |
Name of the Package to assign to customer |
| whitelabel |
Yes |
No more than 255 characters |
The domain name for whitelabel |
| ip_group[] |
No |
No more than 255 characters for each ip_group
name. It must belong to you. |
Name of the IP Group you wish to optionally
add. |
| ip[] |
No |
Valid ip address that belongs to you. |
If package allows it, you can optionally add
additional IP addresses. |
| free_user |
Maybe |
If the new customer is a free customer, you
need to specify this parameter. Either true or false. |
Create a free customer |
| billing_date |
No |
If the new customer's billing anniversary date
is on a different date from the time you create the customer, you
need to specify this parameter. Must be in YYYY-mm-dd format. This
date must be within one billing cycle from the time you create this
customer. (e.g. if they sign up on 2/28/11, then the latest date you
can use is 3/28/11) |
If the new customer's billing anniversary date
is different from today (or when you execute this API call), you can
specify the first billing anniversary date |
XML Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.add.xml{% endrequesturl %}
{% requestdata Data POST %}api_user=your_sendgrid_username&api_key=your_sendgrid_password&username=newcustomer<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:xml %}
success
{% endcodeblock %}
Response: Error
{% codeblock lang:xml %}
error
...
... error messages ...
...
{% endcodeblock %}
JSON Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.add.json{% endrequesturl %}
{% requestdata Data POST %}api_user=your_sendgrid_username&api_key=your_sendgrid_password&username=newcustomer<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:json %}{
"message": "success"
}
{% endcodeblock %}
Response: Error
{% codeblock lang:json %}{
"message": "error",
"errors": [
"...error messages..."
]
}
{% endcodeblock %}
{% anchor h2 %}
Delete a Customer
{% endanchor %}
Remove a customer from your account. This is
not
the same as disabling a customer on our system. However, the removed user will still be stored within the system so that you cannot re-register a new user with this new username.
This is the same thing as closing out a customers account at the end of their billing cycle.
| Parameter |
Required |
Requirements |
Parameter |
| user |
Yes |
Must be a customer registered under your
account. |
The customers username you wish to delete. |
XML Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.delete.xml{% endrequesturl %}
{% requestdata Data POST<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:xml %}
success
{% endcodeblock %}
Response: Error
{% codeblock lang:xml %}
error
...
... error messages ...
...
{% endcodeblock %}
JSON Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.delete.json{% endrequesturl %}
{% requestdata Data POST<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:json %}{
"message": "success"
}
{% endcodeblock %}
Response: Error
{% codeblock lang:json %}{
"message": "error",
"errors": [
"...error messages..."
]
}
{% endcodeblock %}
Retrieve Customers
Obtain a complete list of all customers.
| Parameter |
Required |
Description |
| task |
Yes |
Must be set to
get
in order
to retrieve user information |
| username |
No |
Search filter, customer that is registered
under you |
| email |
No |
Search filter, email address customer was
registered with |
| active |
No |
Search filter, whether or not the customer is
currently active |
| first_name |
No |
Search filter, first name of customer |
| last_name |
No |
Search filter, last name of customer |
| address |
No |
Search filter, address of customer |
| city |
No |
Search filter, city of customer |
| state |
No |
Search filter, state of customer |
| country |
No |
Search filter, country of customer |
| zip |
No |
Search filter, zipcode of customer |
| phone |
No |
Search filter, phone number of customer |
| website |
No |
Search filter, website of customer |
| company |
No |
Search filter, company of customer |
| method |
Yes |
Must be set to
profile
|
XML Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.xml{% endrequesturl %}
{% requestdata Data POST %}api_user=your_sendgrid_username&api_key=your_sendgrid_password&method=profile&task=ge{% endrequestdata %}
{% endrequestblock %}
Response
{% codeblock %}<EMAIL_ADDRESS>any street
any<EMAIL_ADDRESS>any street
any cityCA91234US555-555-5555example.comJSON Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.json{% endrequesturl %}
{% requestdata Data POST %}api_user=your_sendgrid_username&api_key=your_sendgrid_password&method=profile&task=ge{% endrequestdata %}
{% endrequestblock %}
Response
{% codeblock %}
{"username":"username","email":"example1@example.com","active":"true","first_name":"john","last_name":"doe","address":"555 any street","city":"any city","state":"CA","zip":"91234","country":"US","phone":"555-555-5555","website":"example.com"},{"username":"username","email":"example2@example.com","active":"false","first_name":"jane","last_name":"doe","address":"555 any street","city":"any city","state":"CA","zip":"91234","country":"US","phone":"555-555-5555","website":"example.com"}
{% endcodeblock %}
{% anchor h2 %}
Enable a Customer
{% endanchor %}
Enable a customer so they may start sending out emails again. This call will not enable website access.
| Parameter |
Required |
Requirements |
Description |
| user |
Yes |
Must be in email format |
The customer you are planning to enabling |
| method |
Yes |
Must be set to
enable
|
The customer you are planning to enabling |
XML Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.xml{% endrequesturl %}
{% requestdata Data POST<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:xml %}
success
{% endcodeblock %}
Response: Error
{% codeblock lang:xml %}
User not found
{% endcodeblock %}
JSON Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.json{% endrequesturl %}
{% requestdata Data POST<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:json %}{
"message": "success"
}
{% endcodeblock %}
Response: Error
{% codeblock lang:json %}{
"message": "User not found"
}
{% endcodeblock %}
{% anchor h2 %}
Disable a Customer
{% endanchor %}
This prevents them from sending out emails with SendGrid.
| Parameter |
Required |
Requirements |
Description |
| username |
Yes |
Must be in email format |
The customer you are planning to disabling |
| method |
Yes |
Must be set to
disable
|
The customer you are planning to disabling |
XML Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.xml{% endrequesturl %}
{% requestdata Data POST<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:xml %}
success
{% endcodeblock %}
Response: Error
{% codeblock lang:xml %}
User not found
{% endcodeblock %}
JSON Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.json{% endrequesturl %}
{% requestdata Data POST %}api_user=your_sendgrid_username&api_key=your_sendgrid_password&method=disabl{% endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:json %}{
"message": "success"
}
{% endcodeblock %}
Response: Error
{% codeblock lang:json %}{
"message": "User not found"
}
{% endcodeblock %}
{% anchor h2 %}
Enable Website Access To A Customer
{% endanchor %}
Allow a customer to login to the SendGrid.com website. This call will not enable the customer from sending out emails.
| Parameter |
Required |
Requirements |
Description |
| user |
Yes |
Must be in email format |
The customer you are planning to grant
website access |
| method |
Yes |
Must be set to
website_enable
|
The customer you are planning to grant
website access |
XML Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.xml{% endrequesturl %}
{% requestdata Data POST<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:xml %}
success
{% endcodeblock %}
Response: Error
{% codeblock lang:xml %}
User not found
{% endcodeblock %}
JSON Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.json{% endrequesturl %}
{% requestdata Data POST<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:json %}{
"message": "success"
}
{% endcodeblock %}
Response: Error
{% codeblock lang:json %}{
"message": "User not found"
}
{% endcodeblock %}
{% anchor h2 %}
Disable Website Access To A Customer
{% endanchor %}
Disallow a customer to login to the SendGrid.com website. This call will not prevent them from sending out emails.
| Parameter |
Required |
Requirements |
Description |
| user |
Yes |
Must be in email format |
The customer you are planning to disallow
website access |
| method |
Yes |
Must be set to
website_disable
|
The customer you are planning to disallow
website access |
XML Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.xml{% endrequesturl %}
{% requestdata Data POST<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:xml %}
success
{% endcodeblock %}
Response: Error
{% codeblock lang:xml %}
User not found
{% endcodeblock %}
JSON Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.json{% endrequesturl %}
{% requestdata Data POST %}api_user=your_sendgrid_username&api_key=your_sendgrid_password&method=website_disabl{% endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:json %}{
"message": "success"
}
{% endcodeblock %}
Response: Error
{% codeblock lang:json %}{
"message": "User not found"
}
{% endcodeblock %}
{% anchor h2 %}
Update Customer Profile
{% endanchor %}
Allows you to update your customers profile information
| Parameter |
Required |
Description |
| task |
Yes |
Must be set to
set
in order
to update profile information |
| method |
Yes |
Must be set to
profile
|
| user |
Yes |
Customer that is registered under you |
| first_name |
No |
First name of customer |
| last_name |
No |
Last name of customer |
| address |
No |
Address of customer |
| city |
No |
City of customer |
| state |
No |
State of customer |
| country |
No |
Country of customer |
| zip |
No |
Zipcode of customer |
| phone |
No |
Phone number of customer |
| website |
No |
Website of customer |
| company |
No |
Company of customer |
XML Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.xml{% endrequesturl %}
{% requestdata Data POST<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:xml %}
success
{% endcodeblock %}
Response: Error
{% codeblock lang:xml %}
error
...
... error messages ...
...
{% endcodeblock %}
JSON Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.json{% endrequesturl %}
{% requestdata Data POST<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:json %}{
"message": "success"
}
{% endcodeblock %}
Response: Error
{% codeblock lang:json %}{
"message": "error",
"errors": [
"...error messages..."
]
}
{% endcodeblock %}
{% anchor h2 %}
Update Customer Password
{% endanchor %}
Passwords are encrypted by default and therefore cannot be retrieved; however, you can reset a customers password.
| Parameter |
Required |
Requirements |
Description |
| user |
Yes |
Customer must be registered under you |
The customer you are planning to reset the
password |
| password |
Yes |
Must be at least 6 characters |
New password of customer |
| confirm_password |
Yes |
Must match password parameter and be at least
6 characters |
Confirm new password |
| method |
Yes |
Must be set to
password
|
Allows you to access password functionality |
XML Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.xml{% endrequesturl %}
{% requestdata Data POST<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:xml %}
success
{% endcodeblock %}
Response: Error
{% codeblock lang:xml %}
error
...
... error messages ...
...
{% endcodeblock %}
JSON Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.json{% endrequesturl %}
{% requestdata Data POST<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:json %}{
"message": "success"
}
{% endcodeblock %}
Response: Error
{% codeblock lang:json %}{
"message": "error",
"errors": [
"...error messages..."
]
}
{% endcodeblock %}
{% anchor h2 %}
Update Customer Username
{% endanchor %}
Note that your customer account username is used to login to our SMTP server
and
the website and changes take effect immediately.
| Parameter |
Required |
Requirements |
Description |
| task |
Yes |
Must be set to
setUsername
|
This will let us know you want to update your customers username. This is the new username your customer will be authenticating with our SMTP servers
and
to access the website. This update takes effect immediately |
| user |
Yes |
Customer must be registered under your account |
The user we will be updating their username
for |
| username |
Yes |
Must be in email format, not more than 100 characters, cannot be already taken and cannot contain SendGrid.com in the domain name |
This is the new username we will be
authenticating with our SMTP servers
and
to access our site. This update takes effect immediately |
| method |
Yes |
Must be set to
profile
|
Allows you to access profile functionality |
XML Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.xml{% endrequesturl %}
{% requestdata Data POST %}api_user=your_sendgrid_username&api_key=your_sendgrid_password&method=profile&task=setUsername&user=customer<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:xml %}
success
{% endcodeblock %}
Response: Error
{% codeblock lang:xml %}
error
...
... error messages ...
...
{% endcodeblock %}
JSON Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.json{% endrequesturl %}
{% requestdata Data POST %}api_user=your_sendgrid_username&api_key=your_sendgrid_password&method=profile&task=setUsername&user=customer<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:json %}{
"message": "success"
}
{% endcodeblock %}
Response: Error
{% codeblock lang:json %}{
"message": "error",
"errors": [
"...error messages..."
]
}
{% endcodeblock %}
{% anchor h2 %}
Update Customer Email Address
{% endanchor %}
This is the contact email we use for your customers. Changes take place immediately. It is your responsibility to validate the contact email.
| Parameter |
Required |
Requirements |
Description |
| task |
Yes |
Must be set to
setEmail
|
This will let us know you want to update your
customers email address. This update takes effect immediately |
| user |
Yes |
Customer must be registered under your account |
The user we will be updating their username
for |
| email |
Yes |
Must be in email format, not more than 100
characters |
This is the new email address we will use for
contacting customer. This update takes effect immediately |
| method |
Yes |
Must be set to
password
|
Allows you to access password functionality |
XML Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.xml{% endrequesturl %}
{% requestdata Data POST %}api_user=your_sendgrid_username&api_key=your_sendgrid_password&method=profile&task=setEmail&user=customer<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:xml %}
success
{% endcodeblock %}
Response: Error
{% codeblock lang:xml %}
error
...
... error messages ...
...
{% endcodeblock %}
JSON Call
{% requestblock %}
{% requesturl POST %}https://api.sendgrid.com/api/distributor.manage.json{% endrequesturl %}
{% requestdata Data POST %}api_user=your_sendgrid_username&api_key=your_sendgrid_password&method=profile&task=setEmail&user=customer<EMAIL_ADDRESS>endrequestdata %}
{% endrequestblock %}
Response: Success
{% codeblock lang:json %}{
"message": "success"
}
{% endcodeblock %}
Response: Error
{% codeblock lang:json %}{
"message": "error",
"errors": [
"...error messages..."
]
}
{% endcodeblock %}


Gateway
BOT
03-Dec-19 03:45 PM
[dscrd-hush] <Privatoshi> Who is down to recieve sha256 checksums, for our software, through HushList?
[dscrd-hush] <dukeleto> @Privatoshi i think it's best to provide the service for free, for our own software and a few other coins that might see the value
[dscrd-hush] <dukeleto> @Privatoshi so the first X orgs that see the value, will get the free service
[dscrd-hush] <dukeleto> then we will charge after that
[dscrd-hush] <Privatoshi> I see value in it, personally
[dscrd-hush] <Privatoshi> Sha256 is secure,simple, easy to decode
(edited)
[dscrd-hush] <Privatoshi> We do it first here to say hey, we have been doing it
[dscrd-hush] <dukeleto> The value prop is "Having a secondary source to verify SHA sums that has it's own cryptographic proof that a SHA of binary X was declared at time Y by person Z"
[dscrd-hush] <dukeleto> that is not just another website controlled by a company that is bound by US or Chinese or Russian law
[dscrd-hush] <dukeleto> There are no masters, just mainnet
[dscrd-hush] <Privatoshi> You can't audit yourself
[dscrd-hush] <dukeleto> we can integrate with PGP keys
[dscrd-hush] <dukeleto> and Keybase proofs, whatever
[dscrd-hush] <Privatoshi> They need someone else doing this
[dscrd-hush] <dukeleto> we can glue it all together with the memo field
[dscrd-hush] <Privatoshi> HushList Protocol is being translated into Spanish
[dscrd-hush] <dukeleto> @Privatoshi maybe Pirate would be interested, other privacy coins and privacy-focused open source projects. Maybe smaller projects would be more interested
[dscrd-hush] <Privatoshi> I'm sure they would be
[dscrd-hush] <dukeleto> @Privatoshi that translator should contact me, because a lot of stuff has changed
[dscrd-hush] <dukeleto> doesn't make sense to translate wrong things
[dscrd-hush] <dukeleto> that paper really needs to be updated, been avoid it
[dscrd-hush] <Privatoshi> @FtrSaroth Here
[dscrd-hush] <Privatoshi> He's going sentence by sentence
[dscrd-hush] <Privatoshi> He came to Hush became HushList
[dscrd-hush] <dukeleto> gosh
[dscrd-hush] <dukeleto> @FtrSaroth i am going to update the intro to hushlist, i would suggest focusing on the main paper, which will stay mostly the same
[dscrd-hush] <dukeleto> it's the intro paragraph and beginning that needs to change a bunch
[dscrd-hush] <dukeleto> but whatevs, having a translation of that version would be good too
[dscrd-hush] <dukeleto> next version will maybe change 10-20% of the paper
[dscrd-hush] <Privatoshi> Do you want me to proofread the current one?
(edited)
[dscrd-hush] <Privatoshi> We are going through it page by page
[dscrd-hush] <Privatoshi> @FtrSaroth sup boss
[dscrd-hush] <FtrSaroth> @dukeleto @Privatoshi Hi!
[dscrd-hush] <FtrSaroth> Then gonna change to the main whitepapper, i enjoying so much the reading and translation
[dscrd-hush] <Privatoshi> @FtrSaroth You know what you can do for Hush, that would be big for the project?
[dscrd-hush] <Privatoshi> You can start to think about, who we can contact in Central & S America, and in Spain, particularly Catalonia, people and organizations that would use HushList.
[dscrd-hush] <Privatoshi> Does that not make sense for them to use this?
[dscrd-hush] <FtrSaroth> Ok, great idea, totally agree, on México maybe mostly journalist are who can be interested, the real journalist always are hunted by the goverment and narco
[dscrd-hush] <Privatoshi> Oooo man.
[dscrd-hush] <Privatoshi> Privacy organizations
[dscrd-hush] <Privatoshi> The cartel scares the shit out of me tbh
[dscrd-hush] <FtrSaroth> Agree, is filtered on every level of the society, even on schools
[dscrd-hush] <Privatoshi> That's the most dangerous organization in the world imo.. I'd rather ISIS be knocking on my door :rollsafe:
[dscrd-hush] <Privatoshi> Human rights organizations
[dscrd-hush] <dukeleto> We want to help those that need the most help, first
[dscrd-hush] <Privatoshi> Mexican journalists it is
[dscrd-hush] <Privatoshi> Catalonia separatists
[dscrd-hush] <dukeleto> We cannot dictate who uses our tech, but we can try to help those that need it most
[dscrd-hush] <Privatoshi> Networks that move battered women
[dscrd-hush] <dukeleto> I have no particular interest in prevent some people from using Hush. I can't. I must create it as a tool for people to choose how to use. It's open source for a reason
[dscrd-hush] <dukeleto> @Privatoshi yes, orgs that have little funding and help vulnerable populations are probably the biggest place for us to help
[dscrd-hush] <Privatoshi> I think @FtrSaroth translating it and if he wanted to, presenting it in Spanish to these orgs, would be HUGE
[dscrd-hush] <dukeleto> I support people helping educate others on how using Hush tech can help people
(edited)
[dscrd-hush] <Privatoshi> @FtrSaroth What do you think?


Create Warehouse
@form(routes.Warehouse.save(), 'class -> "form-horizontal") {
@inputText(warehouseForm("warehouseId"), '_label -> "ID")
@inputText(warehouseForm("name"), '_label -> "Name", 'placeholder -> "Dole Cannery")
@inputText(warehouseForm("city"), '_label -> "City", 'placeholder -> "Honolulu")
@inputText(warehouseForm("state"), '_label -> "State", 'placeholder -> "HI")
@inputText(warehouseForm("zip"), '_label -> "Zip", 'placeholder -> "96822")
}


VOLCANO A film review by Bryan Dobson Copyright 1997 Bryan Dobson
REVIEW: Volcano RATING: 8.5 / 10
Well, I'll admit when I first heard about this film (which was before Dante's Peak) I could just smell what 'Twister' had started. So now it seems that we're in a full fledged return to the '70's disaster film era. With 'Twister', 'Dante's Peak', 'Volcano' and soon 'Flood' and James Cameron's extremly expensive 'Titanic'
I'll say first off I enjoyed 'Volcano' much more than I did 'Dantes Peak'. Part of that is just being biased as I usually enjoy anything that Tommy Lee Jones appears in.
I've been reading a lot about the movie being 'cheezy' or 'hokey' and really didn't see or think that once during the entire film. I get bored easily and this film didn't bore me for a minute. Another thing, and boy am I bitching today!, that bothers me is when critics and such go on about "Well thats not really possible." You know what?   I want to be able to see the impossible, the all might "WHAT IF" to many reviewers have seen one to many movies!
The special effects are the second star to this feature. They are so amazing that I found it hard sometimes to believe they were indeed FX and LA was was not burning to the ground. They did an incredible job and come Oscar time (if they remember) some notice better be thrown there way.
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


Who We Are
Products
Sign Up / Log In
CART
All Products
Emotes
Elixirs
Relics
Conduits
Literature
ALL PRODUCTS
PRODUCT NAME
0.00 ¤
ADD TO CART
PRODUCT NAME
0.00 ¤
ADD TO CART
PRODUCT NAME
0.00 ¤
ADD TO CART
PRODUCT NAME
0.00 ¤
ADD TO CART
PRODUCT NAME
0.00 ¤
ADD TO CART
PRODUCT NAME
0.00 ¤
ADD TO CART


class YARD::Server::Adapter
This class implements the bridge between the {Router} and the server backend for a specific server type. YARD implements concrete adapters for WEBrick and Rack respectively, though other adapters can be made for other server architectures.
Subclassing Notes¶ ↑
To create a concrete adapter class, implement the {#start} method to initiate the server backend.
@abstract
Attributes
@return [String] the location where static files are located, if any.
To set this field on initialization, pass +:DocumentRoot+ to the +server_opts+ argument in {#initialize}
@return [Hash{String=>Array<LibraryVersion>}] a map of libraries. @see LibraryVersion LibraryVersion for information on building a list of libraries @see add_library
@return [Hash] options passed and processed by adapters. The actual
options mostly depend on the adapters themselves.
@return [Router] the router object used to route URLs to commands
@return [Hash] a set of options to pass to the server backend. Note
that +:DocumentRoot+ also sets the {#document_root}.
Public Class Methods
Creates a new adapter object
@param [Hash{String=>Array<LibraryVersion>}] libs a list of libraries,
see {#libraries} for formulating this list.
@param [Hash] opts extra options to pass to the adapter @option opts [Class] :router (Router) the router class to initialize as the
adapter's router.
@option opts [Boolean] :caching (false) whether or not caching is enabled @option opts [Boolean] :single_library (false) whether to server documentation
for a single or multiple libraries (changes URL structure)
# File lib/yard/server/adapter.rb, line 70 def initialize(libs, opts = {}, server_opts = {}) self.class.setup self.libraries = libs self.options = opts self.server_options = server_opts self.document_root = server_options[:DocumentRoot] self.router = (options[:router] || Router).new(self) options[:adapter] = self log.debug "Serving libraries using #{self.class}: #{libraries.keys.join(', ')}" log.debug "Caching on" if options[:caching] log.debug "Document root: #{document_root}" if document_root end
Performs any global initialization for the adapter. @note If you subclass
this method, make sure to call super
. @return [void]
# File lib/yard/server/adapter.rb, line 47 def self.setup Templates::Template.extra_includes |= [YARD::Server::DocServerHelper] Templates::Engine.template_paths |= [File.dirname(__FILE__) + '/templates'] end
Performs any global shutdown procedures for the adapter. @note If you
subclass this method, make sure to call super
. @return [void]
# File lib/yard/server/adapter.rb, line 55 def self.shutdown Templates::Template.extra_includes -= [YARD::Server::DocServerHelper] Templates::Engine.template_paths -= [File.dirname(__FILE__) + '/templates'] end
Public Instance Methods
Adds a library to the {#libraries} mapping for a given library object. @example Adding a new library to an adapter
adapter.add_library LibraryVersion.new('mylib', '1.0', '/path/to/.yardoc')
@param [LibraryVersion] library a library to add
# File lib/yard/server/adapter.rb, line 87 def add_library(library) libraries[library.name] ||= [] libraries[library.name] |= [library] end
Implement this method to connect your adapter to your server. @abstract
# File lib/yard/server/adapter.rb, line 94 def start raise NotImplementedError end


## -*- coding: utf-8 -*
I'm fuckin' rich.
And so are you.
You may not realize it for you're so rich you have no idea how rich you are. At I'm fuckin' rich! (.com), we are dedicated to helping you keep track of all that money you have and are unaware of. You may be wondering where all of this money comes from, and you would be right. Just take a look at your inbox. You probably won $50000 thanks to a generous nigerian ex-president while reading this text. Don't let it go to waste! Claim it and keep track of it on I'm fuckin' rich! (.com)
This nick is already taken. Please choose another one.
% endif % if nick_not_valid:This nick is not valid: you can only use a-z0-9 chars.
% endif % if wrong_currency:Now that's weird! The currency you picked ain't right. That should not have happened with a dropdown list. Doing anything funny?
% endif % if nick_not_valid is not None and nick_not_valid is not True and nick_taken is not None and nick_taken is not True and wrong_currency is not None and wrong_currency is not True:
You are now a registered user of I'm fuckin' rich! (.com)
Go check your profile at http://imfuckinrich.com/${nick}
Choose a nick name (low-case alphanumerical characters only), a password and your default
currency and start keeping track of your money right now:


The Node.js alternative to JEE and Spring Boot
Learn more Get startedJavaScript Enterprise Container (JEC) is the standard in modern JavaScript enterprise software.
Annotation-based configuration makes projects more readable and flexible.
GlassCat servers start 20 times faster than Spring Boot applications.
JEC projects are totally independent from technical implementations.
JEC ships with its own annotation-based unit testing frameworks.
The JEC Command Line Iinterface avoid developers to repeat tedious tasks.
For more information please visit the
JEC Documentation
Let's see how to install GlassCat (the JEC reference implementation) and how to create RESTful microservices.
All JEC projects needs the following system parameters in order to work correctly:
$ [sudo] npm install jec-cli -g
$ cd <path/to/your/server> $ jec glasscat-install
$ <path/to/your/server> glasscat start


Duration
10 minutes
Goals
The goal of this lab is see the effect of the four primary layout options when applied
to a view contained in a StackLayout
. You will be running a pre-built app; there is no code to write.
Required assets
The provided Part 01 Resources folder contains a subfolder named Start that contains the app you will run. Please make sure you have this folder before you begin.
Steps
Run the provided app
The provided app has 8 buttons and a label. Four buttons change the HorizontalOptions
on the label
and four buttons change the VerticalOptions
. The Label
has a gray background so you can
determine its size (see below).
At startup, the Label
will have the default alignment option of Fill
for both horizontal
and vertical. It also has a WidthRequest
and HeightRequest
of 150
.
Your goal is to run the app and see how the different layout options change the size and position of the Label
.
- Open the Alignment app in the provided Start folder.
- Run the app on a platform of your choice.
-
At startup, with the default alignment of
Fill
, are theWidthRequest
andHeightRequest
settings respected? TheLabel
is in a verticalStackLayout
so you should see that theWidthRequest
is ignored while theHeightRequest
is respected. -
Try each of the vertical layout options and observe the behavior.
You should not see any change to the
Label
: theStackLayout
is using theHeightRequest
and completely ignoring the vertical options. -
Try each of the horizontal layout options and observe the behavior.
You should see both the alignment and the size update.
With
Fill
, theLabel
will occupy the full width of theStackLayout
so the alignment is irrelevant since it completely fills the horizontal space. WithStart
,Center
, andEnd
, theWidthRequest
will be respected and the alignment will also change since the label no longer occupies the full width of theStackLayout
.
Summary
There are a few interesting points to take away from this exercise. First, notice that the alignment
options (Start
, Center
, End
, and Fill
) can
change both the size and the alignment of a view. Second, the container can overrule the view's
settings; for example, the vertical StackLayout
completely ignores the
VerticalOptions
of the Label
. Third, the behavior might be different
if we used a different layout such as a Grid
.


Class Path
A geoobject, that derives from Block and represents a ordered collection of
geoobjects which all support the ICurve intrface. The contained curves are connected,
i.e. Child(i).EndPoint is equal or close to Child(i+1).StartPoint.
The Path is not necessary planar, closed and may be self intersecting.
Inheritance
System.Object
Path
Implements
System.IComparable
System.ICloneable
System.Runtime.Serialization.ISerializable
System.Runtime.Serialization.IDeserializationCallback
Inherited Members
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.ToString()
Assembly: CADability.dll
Syntax
[Serializable]
public class Path : IGeoObjectImpl, IGeoObject, ILayer, IStyle, IOctTreeInsertable, IComparable, IFeedBack, ICloneable, IColorDef, ILinePattern, ILineWidth, ICurve, IGeoObjectOwner, ISerializable, IDeserializationCallback, IExtentedableCurve
Constructors
|
Improve this Doc
View Source
Path()
Declaration
|
Improve this Doc
View Source
Path(SerializationInfo, StreamingContext)
Constructor required by deserialization
Declaration
protected Path(SerializationInfo info, StreamingContext context)
Parameters
| Type |
Name |
Description |
| System.Runtime.Serialization.SerializationInfo |
info |
SerializationInfo
|
| System.Runtime.Serialization.StreamingContext |
context |
StreamingContext
|
Fields
|
Improve this Doc
View Source
Constructor
Declaration
public static Path.ConstructionDelegate Constructor
Field Value
|
Improve this Doc
View Source
OnPaintTo3D
Declaration
public static Path.PaintTo3DDelegate OnPaintTo3D
Field Value
Properties
|
Improve this Doc
View Source
ColorDef
Declaration
public ColorDef ColorDef { get; set; }
Property Value
|
Improve this Doc
View Source
Count
Declaration
public int Count { get; }
Property Value
| Type |
Description |
| System.Int32 |
Gets the number uf subcurves in this path.
|
|
Improve this Doc
View Source
CurveCount
Returns the number of curves in the Path
Declaration
public int CurveCount { get; }
Property Value
| Type |
Description |
| System.Int32 |
|
|
Improve this Doc
View Source
Curves
Returns a cloned array of the curves of this path. Do not modify the
curves or the path will be in an invalid state.
Declaration
public ICurve[] Curves { get; }
Property Value
|
Improve this Doc
View Source
Description
Declaration
public override string Description { get; }
Property Value
| Type |
Description |
| System.String |
|
Overrides
|
Improve this Doc
View Source
EndDirection
Declaration
public GeoVector EndDirection { get; }
Property Value
|
Improve this Doc
View Source
EndPoint
Declaration
public GeoPoint EndPoint { get; set; }
Property Value
|
Improve this Doc
View Source
IsClosed
Declaration
public bool IsClosed { get; }
Property Value
| Type |
Description |
| System.Boolean |
|
|
Improve this Doc
View Source
IsSingular
Declaration
public bool IsSingular { get; }
Property Value
| Type |
Description |
| System.Boolean |
|
|
Improve this Doc
View Source
Layer
Declaration
public override Layer Layer { get; set; }
Property Value
Overrides
|
Improve this Doc
View Source
Length
Declaration
public double Length { get; }
Property Value
| Type |
Description |
| System.Double |
|
|
Improve this Doc
View Source
LinePattern
Declaration
public LinePattern LinePattern { get; set; }
Property Value
|
Improve this Doc
View Source
LineWidth
Declaration
public LineWidth LineWidth { get; set; }
Property Value
|
Improve this Doc
View Source
StartDirection
Declaration
public GeoVector StartDirection { get; }
Property Value
|
Improve this Doc
View Source
StartPoint
Declaration
public GeoPoint StartPoint { get; set; }
Property Value
|
Improve this Doc
View Source
Vertices
Declaration
public GeoPoint[] Vertices { get; }
Property Value
Methods
|
Improve this Doc
View Source
Add(ICurve)
Adds a curve to this path. It is checked whether the curve to add can be connected
to the start or endpoint of this path. If necessary the curve will be reversed. If
it cannot be connected false will be returned.
Declaration
public bool Add(ICurve ToAdd)
Parameters
| Type |
Name |
Description |
| ICurve |
ToAdd |
curve to add
|
Returns
| Type |
Description |
| System.Boolean |
true on success, false on failure
|
|
Improve this Doc
View Source
BestCyclicalPosition(Path)
Assumes both this and toThis are closed Paths with the same number of segments. Changes this Path
to start with the segment where the distance of corresponding vertices is minimal. The geometry of
this curve will not be changed
Declaration
public bool BestCyclicalPosition(Path toThis)
Parameters
| Type |
Name |
Description |
| Path |
toThis |
adapt to this path
|
Returns
| Type |
Description |
| System.Boolean |
true, if condition is satisfied
|
|
Improve this Doc
View Source
ChangeCyclicalStart(Int32)
Declaration
public void ChangeCyclicalStart(int newStartCurve)
Parameters
| Type |
Name |
Description |
| System.Int32 |
newStartCurve |
|
|
Improve this Doc
View Source
Clear()
Removes all subcurves, the Path will be empty. Use this before modifying
contained objects of this path because it is not allowed to mdify an object
in a path in a way that would compromise the consitence of the path
Declaration
|
Improve this Doc
View Source
Clone()
Declaration
public override IGeoObject Clone()
Returns
Overrides
|
Improve this Doc
View Source
Construct()
Declaration
public static Path Construct()
Returns
|
Improve this Doc
View Source
CopyGeometry(IGeoObject)
Declaration
public override void CopyGeometry(IGeoObject ToCopyFrom)
Parameters
Overrides
|
Improve this Doc
View Source
CreateFromModel(ICurve, Model, Projection, Boolean)
Returns a Path containing the curve BeginWith and other curves from the projectedModel.
The curve BeginWith is checked at both ends to find connected objects. The search is stopped
if there are nore more connected objects. The curves are clones and are tagged with UserData objects
with the name key "CADability.Path.Original" and the original object as the value.
If flatten is true, UserData will be lost.
Declaration
public static Path CreateFromModel(ICurve BeginWith, Model model, Projection projection, bool flatten)
Parameters
| Type |
Name |
Description |
| ICurve |
BeginWith |
Curve to begin with
|
| Model |
model |
|
| Projection |
projection |
|
| System.Boolean |
flatten |
true: flatten the result, false: result not flattened
|
Returns
| Type |
Description |
| Path |
The path or null if no cennecting objects found
|
|
Improve this Doc
View Source
CreateFromModel(ICurve, Model, Boolean)
Returns a Path containing the curve BeginWith and other curves from the Model.
The curve BeginWith is checked at both ends to find connected objects. The search is stopped
when there are nore more connected objects. The curves are clones and are tagged with UserData objects
with the name key "CADability.Path.Original" and the original object as the value.
If flatten is true, UserData will be lost.
Declaration
public static Path CreateFromModel(ICurve BeginWith, Model model, bool flatten)
Parameters
| Type |
Name |
Description |
| ICurve |
BeginWith |
Curve to begin with
|
| Model |
model |
the model to search for connecting curves
|
| System.Boolean |
flatten |
true: flatten the result, false: result not flattened
|
Returns
| Type |
Description |
| Path |
The path or null if no cennecting objects found
|
|
Improve this Doc
View Source
Curve(Int32)
Returns the i-th curve of the path. Do not modify this curve or the path
will be in an invalid state. For the number of curves see CurveCount.
Declaration
public ICurve Curve(int Index)
Parameters
| Type |
Name |
Description |
| System.Int32 |
Index |
Index of the desired curve
|
Returns
| Type |
Description |
| ICurve |
The curve with the given index
|
|
Improve this Doc
View Source
Decompose()
Declaration
public override GeoObjectList Decompose()
Returns
Overrides
|
Improve this Doc
View Source
DirectionAt(Double)
Declaration
public GeoVector DirectionAt(double Position)
Parameters
| Type |
Name |
Description |
| System.Double |
Position |
|
Returns
|
Improve this Doc
View Source
FindSnapPoint(SnapPointFinder)
Declaration
public override void FindSnapPoint(SnapPointFinder spf)
Parameters
Overrides
|
Improve this Doc
View Source
Flatten()
Flattens this path. All subcurves that are composed of simple curves
are decomposed into simpler curves (e.g. a polyline is decomposed into lines)
Declaration
|
Improve this Doc
View Source
FromSegments(IEnumerable<ICurve>, Boolean)
Declaration
public static Path FromSegments(IEnumerable<ICurve> curves, bool connectedAndOriented)
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<ICurve> |
curves |
|
| System.Boolean |
connectedAndOriented |
|
Returns
|
Improve this Doc
View Source
GetBoundingCube()
Declaration
public override BoundingCube GetBoundingCube()
Returns
Overrides
|
Improve this Doc
View Source
GetExtent(Projection, ExtentPrecision)
Declaration
public override BoundingRect GetExtent(Projection projection, ExtentPrecision extentPrecision)
Parameters
Returns
Overrides
|
Improve this Doc
View Source
GetExtent(Double)
Declaration
public override BoundingCube GetExtent(double precision)
Parameters
| Type |
Name |
Description |
| System.Double |
precision |
|
Returns
Overrides
|
Improve this Doc
View Source
GetObjectData(SerializationInfo, StreamingContext)
Implements ISerializable:GetObjectData
Declaration
public override void GetObjectData(SerializationInfo info, StreamingContext context)
Parameters
| Type |
Name |
Description |
| System.Runtime.Serialization.SerializationInfo |
info |
|
| System.Runtime.Serialization.StreamingContext |
context |
|
Overrides
|
Improve this Doc
View Source
GetPlanarState()
Declaration
public PlanarState GetPlanarState()
Returns
|
Improve this Doc
View Source
GetPlane()
Declaration
Returns
|
Improve this Doc
View Source
GetProjectedCurve(Plane)
Declaration
public ICurve2D GetProjectedCurve(Plane p)
Parameters
| Type |
Name |
Description |
| Plane |
p |
|
Returns
|
Improve this Doc
View Source
GetQuadTreeItem(Projection, ExtentPrecision)
Declaration
public override IQuadTreeInsertableZ GetQuadTreeItem(Projection projection, ExtentPrecision extentPrecision)
Parameters
Returns
Overrides
|
Improve this Doc
View Source
GetShowProperties(IFrame)
Declaration
public override IShowProperty GetShowProperties(IFrame Frame)
Parameters
| Type |
Name |
Description |
| IFrame |
Frame |
|
Returns
Overrides
|
Improve this Doc
View Source
HitTest(ref BoundingCube, Double)
Declaration
public override bool HitTest(ref BoundingCube cube, double precision)
Parameters
| Type |
Name |
Description |
| BoundingCube |
cube |
|
| System.Double |
precision |
|
Returns
| Type |
Description |
| System.Boolean |
|
Overrides
|
Improve this Doc
View Source
HitTest(Projection, BoundingRect, Boolean)
Declaration
public override bool HitTest(Projection projection, BoundingRect rect, bool onlyInside)
Parameters
Returns
| Type |
Description |
| System.Boolean |
|
Overrides
|
Improve this Doc
View Source
HitTest(Projection.PickArea, Boolean)
Declaration
public override bool HitTest(Projection.PickArea area, bool onlyInside)
Parameters
Returns
| Type |
Description |
| System.Boolean |
|
Overrides
|
Improve this Doc
View Source
IndexAtLength(Double)
Returns the index of the subcurve at the given position. Position must be between 0.0 and this.Length
Declaration
public int IndexAtLength(double position)
Parameters
| Type |
Name |
Description |
| System.Double |
position |
Position for the query
|
Returns
| Type |
Description |
| System.Int32 |
Index of the curve
|
|
Improve this Doc
View Source
InsertPoint(Double)
Splits the curve of this path that contains the provided position. If position is exactely
on the connection of two subcurves, the path remains unchanged. Otherwise the curve containing the
position is split and both curves are added to the path
Declaration
public void InsertPoint(double position)
Parameters
| Type |
Name |
Description |
| System.Double |
position |
Where to split, must be inbetween 0 and 1
|
|
Improve this Doc
View Source
IsInPlane(Plane)
Declaration
public bool IsInPlane(Plane p)
Parameters
| Type |
Name |
Description |
| Plane |
p |
|
Returns
| Type |
Description |
| System.Boolean |
|
|
Improve this Doc
View Source
Modify(ModOp)
Declaration
public override void Modify(ModOp m)
Parameters
| Type |
Name |
Description |
| ModOp |
m |
|
Overrides
|
Improve this Doc
View Source
PaintTo3D(IPaintTo3D)
Declaration
public override void PaintTo3D(IPaintTo3D paintTo3D)
Parameters
Overrides
|
Improve this Doc
View Source
PointAt(Double)
Declaration
public GeoPoint PointAt(double Position)
Parameters
| Type |
Name |
Description |
| System.Double |
Position |
|
Returns
|
Improve this Doc
View Source
Position(GeoPoint, GeoVector, Double)
Declaration
public override double Position(GeoPoint fromHere, GeoVector direction, double precision)
Parameters
Returns
| Type |
Description |
| System.Double |
|
Overrides
|
Improve this Doc
View Source
PositionOf(GeoPoint)
Declaration
public double PositionOf(GeoPoint p)
Parameters
Returns
| Type |
Description |
| System.Double |
|
|
Improve this Doc
View Source
PositionOf(GeoPoint, Plane)
Declaration
public double PositionOf(GeoPoint p, Plane pl)
Parameters
Returns
| Type |
Description |
| System.Double |
|
|
Improve this Doc
View Source
PositionOf(GeoPoint, Double)
Declaration
public double PositionOf(GeoPoint p, double prefer)
Parameters
| Type |
Name |
Description |
| GeoPoint |
p |
|
| System.Double |
prefer |
|
Returns
| Type |
Description |
| System.Double |
|
|
Improve this Doc
View Source
PrepareDisplayList(Double)
Declaration
public override void PrepareDisplayList(double precision)
Parameters
| Type |
Name |
Description |
| System.Double |
precision |
|
Overrides
|
Improve this Doc
View Source
Remove(ICurve)
Declaration
public bool Remove(ICurve toRemove)
Parameters
| Type |
Name |
Description |
| ICurve |
toRemove |
|
Returns
| Type |
Description |
| System.Boolean |
|
|
Improve this Doc
View Source
RemoveShortSegments(Double)
Removes all segments that are shorter than maxLengthToRemove. Connects the ramaining segments.
Declaration
public void RemoveShortSegments(double maxLengthToRemove)
Parameters
| Type |
Name |
Description |
| System.Double |
maxLengthToRemove |
Max. length of subcurves to remove
|
|
Improve this Doc
View Source
Set(GeoObjectList, Boolean, Double)
Takes a list of unsorted and unoriented geoobjects and tries to put them
together to a connected path. All previously contained segments are removed.
All objects of the list, that are used in this path will be removed
from their owner (see Owner). To avoid objects
bee removed from their owner (e.g. Model or Block)
use a list of cloned GeoObjects (CloneObjects()).
Declaration
public bool Set(GeoObjectList l, bool moreThanOne, double maxgap)
Parameters
| Type |
Name |
Description |
| GeoObjectList |
l |
List of unsorted GeoObjects
|
| System.Boolean |
moreThanOne |
if true, the path must consist of more than one curve
|
| System.Double |
maxgap |
|
Returns
| Type |
Description |
| System.Boolean |
success
|
|
Improve this Doc
View Source
Set(ICurve[])
Makes this path represent the given list if all objects in that list are properly
oriented and connected. If the objects do not connect, false will be returned and this
path remains unchanged.
Declaration
public bool Set(ICurve[] connectedCurves)
Parameters
| Type |
Name |
Description |
| ICurve[] |
connectedCurves |
new contents of this path
|
Returns
| Type |
Description |
| System.Boolean |
true on success, false on failure
|
|
Improve this Doc
View Source
SetPoint(Int32, GeoPoint, Path.ModificationMode)
Declaration
public void SetPoint(int index, GeoPoint newValue, Path.ModificationMode mode)
Parameters
|
Improve this Doc
View Source
SetPoint(Int32, Int32, GeoPoint)
Declaration
public void SetPoint(int indexEndPoint, int indexStartPoint, GeoPoint newValue)
Parameters
| Type |
Name |
Description |
| System.Int32 |
indexEndPoint |
|
| System.Int32 |
indexStartPoint |
|
| GeoPoint |
newValue |
|
|
Improve this Doc
View Source
Split(Double)
Declaration
public ICurve[] Split(double Position)
Parameters
| Type |
Name |
Description |
| System.Double |
Position |
|
Returns
|
Improve this Doc
View Source
Split(Double, Double)
Declaration
public ICurve[] Split(double Position1, double Position2)
Parameters
| Type |
Name |
Description |
| System.Double |
Position1 |
|
| System.Double |
Position2 |
|
Returns
|
Improve this Doc
View Source
Trim(Double, Double)
Declaration
public void Trim(double StartPos, double EndPos)
Parameters
| Type |
Name |
Description |
| System.Double |
StartPos |
|
| System.Double |
EndPos |
|
|
Improve this Doc
View Source
TryPointDeriv2At(Double, out GeoPoint, out GeoVector, out GeoVector)
Declaration
public virtual bool TryPointDeriv2At(double position, out GeoPoint point, out GeoVector deriv, out GeoVector deriv2)
Parameters
Returns
| Type |
Description |
| System.Boolean |
|
Events
|
Improve this Doc
View Source
Constructed
Declaration
public static event Path.ConstructedDelegate Constructed
Event Type
Explicit Interface Implementations
|
Improve this Doc
View Source
IColorDef.SetTopLevel(ColorDef)
Declaration
void IColorDef.SetTopLevel(ColorDef newValue)
Parameters
|
Improve this Doc
View Source
IColorDef.SetTopLevel(ColorDef, Boolean)
Declaration
void IColorDef.SetTopLevel(ColorDef newValue, bool overwriteChildNullColor)
Parameters
| Type |
Name |
Description |
| ColorDef |
newValue |
|
| System.Boolean |
overwriteChildNullColor |
|
|
Improve this Doc
View Source
ICurve.Approximate(Boolean, Double)
Declaration
ICurve ICurve.Approximate(bool linesOnly, double maxError)
Parameters
| Type |
Name |
Description |
| System.Boolean |
linesOnly |
|
| System.Double |
maxError |
|
Returns
|
Improve this Doc
View Source
ICurve.Clone()
Declaration
Returns
|
Improve this Doc
View Source
ICurve.CloneModified(ModOp)
Declaration
ICurve ICurve.CloneModified(ModOp m)
Parameters
| Type |
Name |
Description |
| ModOp |
m |
|
Returns
|
Improve this Doc
View Source
ICurve.DistanceTo(GeoPoint)
Declaration
double ICurve.DistanceTo(GeoPoint p)
Parameters
Returns
| Type |
Description |
| System.Double |
|
|
Improve this Doc
View Source
ICurve.GetExtent()
Declaration
BoundingCube ICurve.GetExtent()
Returns
|
Improve this Doc
View Source
ICurve.GetExtrema(GeoVector)
Declaration
double[] ICurve.GetExtrema(GeoVector direction)
Parameters
Returns
| Type |
Description |
| System.Double[] |
|
|
Improve this Doc
View Source
ICurve.GetPlaneIntersection(Plane)
Declaration
double[] ICurve.GetPlaneIntersection(Plane plane)
Parameters
| Type |
Name |
Description |
| Plane |
plane |
|
Returns
| Type |
Description |
| System.Double[] |
|
|
Improve this Doc
View Source
ICurve.GetSavePositions()
Declaration
double[] ICurve.GetSavePositions()
Returns
| Type |
Description |
| System.Double[] |
|
|
Improve this Doc
View Source
ICurve.GetSelfIntersections()
Declaration
double[] ICurve.GetSelfIntersections()
Returns
| Type |
Description |
| System.Double[] |
|
|
Improve this Doc
View Source
ICurve.HitTest(BoundingCube)
Declaration
bool ICurve.HitTest(BoundingCube cube)
Parameters
Returns
| Type |
Description |
| System.Boolean |
|
|
Improve this Doc
View Source
ICurve.IsComposed
Declaration
bool ICurve.IsComposed { get; }
Returns
| Type |
Description |
| System.Boolean |
|
|
Improve this Doc
View Source
ICurve.ParameterToPosition(Double)
Declaration
double ICurve.ParameterToPosition(double parameter)
Parameters
| Type |
Name |
Description |
| System.Double |
parameter |
|
Returns
| Type |
Description |
| System.Double |
|
|
Improve this Doc
View Source
ICurve.PositionAtLength(Double)
Declaration
double ICurve.PositionAtLength(double position)
Parameters
| Type |
Name |
Description |
| System.Double |
position |
|
Returns
| Type |
Description |
| System.Double |
|
|
Improve this Doc
View Source
ICurve.PositionToParameter(Double)
Declaration
double ICurve.PositionToParameter(double position)
Parameters
| Type |
Name |
Description |
| System.Double |
position |
|
Returns
| Type |
Description |
| System.Double |
|
|
Improve this Doc
View Source
ICurve.Reverse()
Declaration
|
Improve this Doc
View Source
ICurve.SameGeometry(ICurve, Double)
Declaration
bool ICurve.SameGeometry(ICurve other, double precision)
Parameters
| Type |
Name |
Description |
| ICurve |
other |
|
| System.Double |
precision |
|
Returns
| Type |
Description |
| System.Boolean |
|
|
Improve this Doc
View Source
ICurve.SubCurves
Declaration
ICurve[] ICurve.SubCurves { get; }
Returns
|
Improve this Doc
View Source
ICurve.TangentPosition(GeoVector)
Declaration
double[] ICurve.TangentPosition(GeoVector direction)
Parameters
Returns
| Type |
Description |
| System.Double[] |
|
|
Improve this Doc
View Source
IExtentedableCurve.GetExtendedCurve(ExtentedableCurveDirection)
Declaration
IOctTreeInsertable IExtentedableCurve.GetExtendedCurve(ExtentedableCurveDirection direction)
Parameters
Returns
|
Improve this Doc
View Source
IGeoObjectOwner.Add(IGeoObject)
Declaration
void IGeoObjectOwner.Add(IGeoObject toAdd)
Parameters
|
Improve this Doc
View Source
IGeoObjectOwner.Remove(IGeoObject)
Declaration
void IGeoObjectOwner.Remove(IGeoObject toRemove)
Parameters
|
Improve this Doc
View Source
IDeserializationCallback.OnDeserialization(Object)
Declaration
void IDeserializationCallback.OnDeserialization(object sender)
Parameters
| Type |
Name |
Description |
| System.Object |
sender |
|
Implements
System.IComparable
System.ICloneable
System.Runtime.Serialization.ISerializable
System.Runtime.Serialization.IDeserializationCallback


class: left, middle background-image: url(../../images/master-folie.png) .title[ ## Template and object literals
### Oleg Varaksin ####<EMAIL_ADDRESS>] --- # Template literals. __Template literals__ is a new feature in ES6 to make working with strings and string templates easier. You wrap your text in backticks (instead of double or single quotes) and you'll get the following features: - Multiline strings without hacks. - String formatting - the ability to substitute parts of the string for values contained in variables. This ability is also called string substitution. - Tagged templates - string tagging for safe HTML escaping, localisation and more. Basic syntax: ```js let message = `Hello world!`; console.log(message); // "Hello world!" console.log(typeof message); // "string" ``` The variable `message` contains a normal JavaScript string. If you want to use a backtick in your string, then just escape it with a backslash. ```js let message = `\`Hello\` world!`; ``` --- # Multiline strings (1/3). In ES5, when using double or single quotes, strings must be completely contained on a single line. There are workarounds for this shortcoming. Workarounds with backslash which is treated as a continuation, `join` and `\n`. ```js var message = "Multiline \ string"; console.log(message); // "Multiline string" ``` ```js var message = [ "Multiline ", "string" ].join("\n"); ``` ```js let message = "Multiline \n" + "string"; ``` --- # Multiline strings (2/3). In ES6, template literals make multiline strings easy because there's no special syntax. Just include a newline where you want. ```js let message = `Multiline string`; console.log(message); // "Multiline // string" ``` All whitespaces inside the backticks are parts of the string, so be careful with indentation. ```js let message = `Multiline string`; console.log(message); // "Multiline // string" ``` --- # Multiline strings (3/3). If making the text line up with proper indentation is important to you, then consider leaving nothing on the first line of a multiline template literal and then indenting after that. Example: ```js let html = `
Title
`.trim(); ``` --- # String substitution (1/3). Substitutions allow you to embed any valid JavaScript expression inside a template literal and output the result as part of the string. Substitutions are delimited by an opening `${` and a closing `}` that can have any JavaScript expression inside. ```js var name = "Max"; console.log(`Hello, ${name}!`); // => "Hello, Max!" ``` ```js var a = 10; var b = 10; console.log(`The number of JS MVC frameworks is ${2 * (a + b)} and not ${10 * (a + b)}.`); // => The number of JS frameworks is 40 and not 200. ``` __Note:__ A template literal can access any variable accessible in the scope in which it is defined. Attempting to use an undeclared variable in a template literal throws an error. --- # String substitution (2/3). The `${}` works fine with any kind of expression, including member expressions, function and method calls. ```js function fn() { return "I am a result. Rarr"; } console.log(`foo ${fn()} bar`); // => foo I am a result. Rarr bar. ``` ```js var user = { name: 'Max Mustermann' }; console.log(`Thanks for helping us, ${user.name.toUpperCase()}.`); // => "Thanks for helping us, MAX MUSTERMANN"; ``` --- # String substitution (3/3). Advanced example of building HTML structures. ```js var li = (obj) => `
${obj.label}
`; var ul = (arr) => `
${arr.map((obj) => li(obj)).join('\n')}
`; var arr = [ {url: "http://www.twitter.com", label: "Twitter"}, {url: "http://www.linkedin.com", label: "Linked In"}, {url: "http://www.facebook.com", label: "Facebook"} ]; document.getElementById('list').innerHTML = ul(arr); ``` This will generate the following output: ```js
Twitter
Linked In
Facebook
``` --- # Tagged templates (1/4). A _template tag_ performs a transformation on the template literal and returns the final string value. This tag is specified at the start of the template, just before the first backtick, e.g. ```js let message = tag`Hello world`; ``` In this example, `tag` is the template tag to apply to the `Hello world` template literal. A template tag is a function. - The first argument of this function is an array of all the plain strings (the stuff between any interpolated expressions). - Each subsequent argument is the interpreted value of each substitution. ```js function tag(literals, ...substitutions) { // return a string } ``` --- # Tagged templates (2/4). Simple example which outputs arguments. ```js function foo(strings, ...values) { console.log(strings); console.log(values); } var desc1 = "very"; var desc2 = "awesome"; foo`Everything is ${desc1} ${desc2}!`; // ["Everything is ", " ", "!"] // ["very", "awesome"] ``` __Using in real world:__ special processing for internationalization, localization, HTML escaping and more. --- # Tagged templates (3/4). Another example that mimics the default behavior of a template literal. ```js function passthru(literals, ...substitutions) { let result = ""; // run the loop only for the substitution count for (let i = 0; i < substitutions.length; i++) { result += literals[i]; result += substitutions[i]; } // add the last literal result += literals[literals.length - 1]; return result; } let count = 10, price = 0.25, message = passthru`${count} items cost $${(count * price)}.`; console.log(message); // "10 items cost $2.50." ``` --- # Tagged templates (4/4). There's an additional bit of data included: the raw unprocessed versions of all the strings. You can access those raw string values using the `.raw` property of the first argument. Example: ```js function showraw(strings, ...values) { console.log(strings); console.log(strings.raw); } showraw`Hello\nWorld`; // [ "Hello // World" ] // [ "Hello\nWorld" ] ``` The raw version of the value preserves the raw escaped `\n` sequence (the `\` and the `n` are separate characters). __Note:__ ES6 comes with a built-in function `String.raw(...)` that can be used to access the raw string. --- # Object literal syntax extensions (1/4). __ES5.__ Object creation leads to duplications when the names are the same as the function parameter names. ```js function createPerson(name, age) { return { name: name, age: age }; } ``` __ES6.__ Property initializer shorthand: when an object property name is the same as the local variable name, you can simply include the name without a colon and value. ```js function createPerson(name, age) { return { name, age }; } ``` --- # Object literal syntax extensions (2/4). __ES5.__ You must specify a name and then the full function definition to add a method to an object. ```js var person = { name: "Nicholas", sayName: function() { console.log(this.name); } }; ``` __ES6.__ The colon and the `function` keyword can be eliminated. ```js var person = { name: "Nicholas", sayName() { console.log(this.name); } }; ``` --- # Object literal syntax extensions (3/4). In __ES6__, computed property names can be used in object literals within square brackets. ```js var suffix = " name"; var lastName = "last name"; var person = { ["first" + suffix]: "Max", [lastName]: "Mustermann" }; console.log(person["first" + suffix]); // "Max" console.log(person[lastName]); // "Mustermann" ``` It is not possible in __ES5__ where only constants may be used in object literals. --- # Object literal syntax extensions (4/4). In __ES6__, the duplicate property check was removed. There is no syntax error as in __ES5__ when two and more properties have the same names. Instead, the last property of the given name becomes the property's actual value. ```js var person = { name: "Max", name: "Greg" }; console.log(person.name); // "Greg" ``` --- class: center, middle, inverse # That's all folks, thanks for your attention! .back[[Back to the homepage](http://ova2.github.io/es6-presentations/)] Slideshow created with [remark](https://github.com/gnab/remark)