Under sites we are going to classify them according to provinces,and in each province we will tackle three sites.
The Conservancy is one of the pioneers of community conservation in Kenya. Selenkay shares the same eco-system as Amboseli and is established on lands leased from the local Maasai by Gamewatchers Safaris Ltd with the aim of protecting the habitation and encouraging wildlife conservation as an alternative to farming as a means for the local population to earn a living. Wildlife: Visitors can expect to see elephants, Thomson and Grant’s gazelles, lions, cheetahs and leopards, bat eared fox, mongooses, porcupine, giraffe and yellow baboon among the many now indigenous species Getting there: Road: 175 kms from Nairobi, down the Mombasa road and via Emali (roughly 4 1/2 hours). Air: Chartered flights are able to land at the Selenkay airstrip, located 5 minutes drive from Porini Amboseli Safari Camp.
The Olkinyei conservancy was founded in 2005 through a partnership between 171 local private landowners and Gamewatchers Safaris & Porini Safari Camps.Since the formation of the Conservancy many indigenous species have returned to the land. The Conservancy is now home to a wide variety of wildlife including a resident pride of over 30 lions, leopards and numerous other animals as well as over 300 species of bird. The activities at Ol Kinyei Adventure Camp consist of wildlife-watching excursions (“game drives") in the Ol Kinyei Conservancy in customised 4x4 safari vehicles taking a maximum of six, meaning everyone gets a window seat
The community conservancy concept is part of a new model of safari-tourism designed to create a mutually beneficial partnership between the Maasai and the tour operators. Instead of buying the land off the Maasai, the land is leased for the purpose of wildlife conservation. This is preferable for the Maasai as they have a guaranteed annual income (the amount paid is per acre not per guest) and they retain ownership of the land. Tourism also generates employment as the camp staff, guides and conservancy rangers are all drawn from the families of the Maasai landowners. In return the Maasai vacate the lands removing all sedentary homesteads or livestock bomas within the conservancy. This allows grass and vegetation to recover from overgrazing.
The myth Lake Simbi Nyaima in Karachuonyo, near Kendu Bay Town, is famed for its culture and other attractions. Simbi Nyaima has proved its worth as a tourist destination. It lures local and international visitors yearning for a beautiful scenery and strange tales of its formation. In Dholuo, “Simbi Nyaima” means the village that sank. Geologists say it is a crater lake formed about six centuries ago. They also believe that the lake came about as a result of earthquakes accompanied by volcanic eruptions.Some of the activities to do at the lake include;water sports,boat riding,view flamingoes and many more.
A mosaic of landscapes, ranging from riverine woodland and rolling savannah to magnificent escarpments and towering cliffs, Ruma National Park promises undiscovered wildlife treasures and undisturbed peace. It is also Kenya’s last remaining sanctuary for the endangered roan antelope. The park is also the only protected area in Kenya where the globally threatened blue swallow, a scarce intra-African migrant, is regularly recorded.
Set on the shore of Lake Victoria, the largest freshwater lake in Africa, the Kisumu Impala Sanctuary is a peaceful, relaxing place to enjoy the natural beauty that abounds here. The sanctuary hosts impalas, the rare Sitatunga antelope as well as big cats, buffalos, giraffes, cheetahs and several primate species. The sanctuary is also home to five campsites all with spectacular views of Lake Victoria. Bird watching, nature walks and glass bottomed boat rides compliment the activities availed at the sanctuary.
Based in Nairobi’s Industrial area , GoDown Arts Center houses creatives inform of local performing and visual artists. This place offers regular exhibitions, shows, workshops and open cultural nights.A regular schedule of arts programs that showcase various artistic and cultural events are staged by the center. These range from music concerts, children’s arts, and culture programs, cultural festivals, community shows, artist exhibitions, theater performances, skill-developing workshops, seminars, and artistic exchange.
The Brandy Bus is an old school bus that has been revamped, and it makes a great Airborn listing. It is in Karen, Nairobi and it is a perfect place to recharge after the weekday grind. It has two double beds upstairs and small beds downstairs, and there is an outdoor fireplace. If you are not scared, rent the place and spend a night alone.
It is one of a kind in Nairobi, and the vibe is a mix of Kenyan and urban design. It is one of Nairobi’s hidden gems. They sell some unique art pieces, furniture, home decor, bags and jewelry. They have a little outdoor area where they serve some great coffee, pastries and delicious food.
Many Kenyans and foreign tourists may be surprised to hear a national park called malka mari national park.its a vast park, it has a very nice landscape from the ant hills to the dancing gazelles,the Somali giraffe,the laughing spotted hyena,the dik dik(the dwarf gazelle),the mighty Olympian(cheetah) to the mighty Nile crocodile busking on the sand of the great dawa river.... All am saying is this is an ideal place to visit. it is very natural compared to other parks in kenya.
A gloriously wild and remote landscape with fantastic vistas across equatorial Kenya and wonderful wildlife. Can be a harsh landscape - do not go unprepared. Undisturbed wildlife,undulant riverside camping,I would recommend anyone who needs a break out day-day activities,rock climbing,bird watching,nature trails.its so interesting.
Chyulu Hills are a range of hills that sit on the plains of Eastern Province splitting the plains into two with the Maasai tribe on one side and the Kamba people on the other. The series of extinct volcanoes marry the plains at the foothills offering miles and miles of hiking country for any enthusiastic visitor. The climate is hot and dry most time of the year, and though the hills do not have a permanent water body, rainwater seeps into the rocks and flows to Tsavo River, Mzima Springs and Galana River.The national park is just part of the bounty for your trip because exploring the rest of the hills not included in the park is quite an experience.  Hike to the top and view Mount Kilimanjaro and Amboseli.
The Mnarani ruins are the remains of two mosques near Mnarani in Kilifi County, Kenya. Dating from the 15th century, the mosques are located on a bluff overlooking Kilifi Creek from the southern side The settlement at the site dates back to the 14th century, and the site also contains a number of tombs. The serene compound is great for day walks and picnics.Also of note here is the site's large baobab tree and a reptile farm that is included in the entrance fee and supports snakes, monitor lizards, and other creatures.
We do have other sites in kenya which are not in coast province,we will list them below and feel to visit any of the places to see what it has to offer.
The upper slopes of this isolated forested massif, surrounded on all sides by the arid badlands characteristic of northern Kenya, are protected in a national park studded with crater lakes. Further afield, the area is scattered with 'singing wells', named for the local Borena custom of singing while several dozen of them form a queue by the steep walls to pass along buckets of water one by one. Miles from any beaten tourist track, Marsabit is serviced by what must be the country's quietest game lodge, with a fine location above a forest-fringed crater lake teeming with birds and visited daily by elephants.
it is Africa’s fourth largest lake, most saline and the world’s largest permanent desert lake. Despite being surrounded by an arid landscape that appears devoid of life, the lake is teeming with it. It is a major breeding ground for the Nile crocodile, hippopotamus, a variety of venomous snakes, and fish species. Home to hundreds of bird species, it is also an important flyway passage and stopover for migrant birds from northern Asia and Europe.
Last but not least, for those looking to interact with the smallest tribe in Kenya, Loiyangalani is a fascinating place to visit. Loiyangalani is a small native town located on the southern coast of the Lake Turkana. In the native Samburu language, the name Loiyangalani means a place of many trees. Loiyangalani is the home of the El molos, the smallest tribe in Kenya still living in their traditional ways.


Authentication key (API Key). Get your own by registering at https://secure.bytescout.com/users/sign_up.
Input URL
or HTML code
Orientation Portrait Landscape
Margins: Left Top Right Bottom


Hey there, good to see you.
I’m Terence, a Product Designer
currently at
Facebook.
Most recently, I’ve launched
Social Skin Club.
Let’s keep in touch.
Connect with me on
LinkedIn.


Is it possible (or advisable) to build an Arduino device so that I can connect a CT to every circuit on a home electric panel? There are about 25 circuits. (This is in the US, if that makes a difference.)
I will have a tenant whom I'd like to bill for their energy use and they occupy half of our house and approx half of the circuits, but all of the power is on one central panel.
Any advice would be appreciated.
Re: Connecting every breaker on a panel?
Yes it would be possible. But advisable or practical - that's another question. Seriously, get an electrician to tell you how practical it would be to segregate the tenant's circuits onto a separate panel, fed by two of your circuits via a second meter, and of course the cost involved.
Then weigh that up against what you have to build: if you want 'continuous' monitoring, and you really do for revenue purposes, you need a processor with several ADCs (the Atmel ATMega 328 that we use only has one multiplexed across 6 inputs and that's hard pressed to measure 4 currents and one voltage), you need two voltage inputs and 25 current inputs, each with a CT. Even if you don't need 'continuous' monitoring and you're prepared to charge based on a sample power measurement every 10s say, you still need the same number of current inputs but you can switch between them with a multiplexer. There may be a small cost saving but offset by an increase in circuit complexity.
People have built systems with getting on for that many inputs, but not for that reason. What they are normally interested in is individual appliance consumption.
Re: Connecting every breaker on a panel?
Adding to what Robert said above, it is possible to use the measurements if you want to jump the technological hurdles.
We have installed an EmonTx for the purpose of "approximate bill sharing" at a residence with a separate granny flat. Fortunately in this case there was a single breaker in the main panel that fed the granny flat's sub-panel. We were able to measure the power using 4 CT's (2 for main, 2 for subpanel).
Here is the dashboard showing real time use and history:
http://data.peakmonitor.com/proto5
25 circuits: I have had success using multiple EmonTX's, and also combining several circuits into one CT (provided that they are on the same phase, and that there is enough slack in the wires in the panel to manipulate them (rare in a modern US tract home panel, but common in older or commercial panels)). Using this method you might be able to get the number of CT's down to a reasonable number, perhaps 8 or 12.


I am a UC San Diego new grad with a B.S in Computer Science seeking for a Full-Time Software Engineering Position. I am a unique problem solver who has work experience in leadership, teamwork, and is passionate about motivating others. As a Software Engineer, I would become an asset to a company by bringing innovated ideas and by developing clean deployable code.
Learn more about me


Test assumptions faster with
LandingPage
Choose your words
Communicate the solution!
Measure user approval
If you can't measure it, don't bother.
Listen and hustle!
Adapt to user needs.
Plans & Pricing


Preparation time
less than 30 mins
Cooking time
30 mins to 1 hour
Serves
Serves 4
This slow cooked French stew is made easier by using shop-bought confit duck legs to save you time without losing any flavour.
For the sausage and lentil cassoulet, first fry the sausages in the butter and oil, until browned.
Heat a sauté pan or a large frying pan and then add the knob of butter and two tablespoons of olive oil. Once hot, add the onion and cook for two minutes. Add the garlic, diced bacon, carrot, celery, leek, bay leaf and cumin and cook for a further two minutes.
Add the lentils and red wine and bring to the boil. Cook until the volume of wine has reduced by half, then add the stock. Place the cooked sausages, duck and smoked duck in the pan and cook the lentils for 25-30 minutes. Mix in the sherry vinegar and parsley.
For the pomme purée, cook the potatoes in boiling salted water for 12-15 minutes, or until tender. Drain.
Push the potato through a potato ricer into a saucepan. (Alternatively, mash with a potato masher, but the finish will not be as smooth.) Return to the heat, then add the butter and cream and beat to a smooth purée. Season, to taste, with salt and freshly ground black pepper. Place in a piping bag and set aside.
To serve, pipe the pomme purée into shallow bowls and pour some sausage and lentil cassoulet alongside.


Heartbreaking photos of Australia's deadly bush fires as whole towns are devastated
Bushfires are ripping through New South Wales and Queensland in Australia- wreaking havoc and causing extensive damage that has been captured in a series of intense photographs
by Milo Boyd, Naimah Archibald-Powell, https://www.mirror.co.uk/authors/milo-boyd/, https://www.mirror.co.uk/authors/niamah-archibald-powell/The devastation that has been wreaked on the Australian bush has been captured in a series of alarming photographs.
Thousands of fire fighters have been battling a ferocious blaze that has gripped New South Wales and Queensland on the east coast for several days.
As of Friday morning four people had lost their lives in the natural disaster, with flames made up of 1,600 individual bushfires stretching out across the states.
Photos taken in NSW show orange and red clouds of heat swallowing up every inch of vegetation, structure and land that is visible in the frame.
In apocalyptic seeming scenes fire tornadoes can be seen spinning and spewing out clouds of smoke, flames and debris.
People have been fleeing the fires that have melted road signs and wrecked hundreds of homes.
Animals can be seen lying on the ground confused and seemingly terrified by the raging flames that surround them.
In one photo a baby kangaroo appears alone and lost, its mouth surrounded by soot.
While wildfires and bushfires are a part of Australia’s natural ecosystem, the current blazes are unprecedented in terms of their intensity.
In a direct sense the cause of the fires are either the result of a stray, inadvertently caused spark, or an arsonist - with the country's Centre for Research in Bushfire and Arson suggesting around half of Australia's annual 62,000 bushfires are probably deliberately caused.
The reason why they are burning for longer, hotter and more intensely than ever is because of climate change.
Like the UK, Australia is getting hotter and is experiencing more droughts - a combination that creates a tinderbox like environment for bushfires.
Thanks to tree loss, smoke and the perils of heat, approximately 350 koala bears are expected to have perished in the past week.
This comes after reports that nearly 5,000 acres of an area which acted as a natural habitat for koalas was destroyed during the fires.
More than $500,000AU has been raised on GoFundMe to help facilitate the rehabilitation of the surviving koalas, but as the fires become more regular, their future is increasingly uncertain.
An estimated 2.5 million acres of farmland and bushland have been destroyed in total.
Among the thousands of firefighters risking their lives to save communities and land is pregnant volunteer Kat Robinson-Williams, who refuses to sit out of firefighting operations despite expecting a baby.
Aircraft such as boeings and helicopters are being used to fly across Australia and dispel water or pink retardant material across the affected areas in a bid to help combat the flames.
As the pink substance is sprayed and falls down to ground level, the particles spread and swallow up homes, cars, pavements and entire towns.
More than 300 homes have been destroyed according to the most recent statistics.
One of these homes belongs to Oscar-winning actor Russell Crowe who reassured concerned fans on Twitter that he, his family and his animals were safe from the flames.
Poorer parts of the country have unsurprisingly been harder hit by the fires.
Fairfield was singled out as one of the most deprived areas in Sydney in a report published earlier this year.
The area, which is currently experiencing fires described as “catastrophic”, is in the midst of a debate about fire fighter funding.
As these deadly infernos become more common and continue to wreck livelihoods, it is economically deprived areas like Fairfield which will suffer and burn the most.


{% extends 'base.html'%} {% block styles%} {{ super() }} {% endblock %} {% block content %}
Football is best game for gamers and talented
Nothing iritates like slow network
Cartoon movies for adults is weird
They say its a dirty game but determines how we all live
Want to make super sales, make your brand sell


About the @@name@@ Working Group
What we do
Who we are
Get involved
We welcome comments and discussion from the web community, on GitHub and our email lists.
We also welcome new members:
Our charter
The WG runs from to .
We welcome comments and discussion from the web community, on GitHub and our email lists.
We also welcome new members:
The WG runs from to .


tinyscraper
Looking up the YWCA's phone numbers with tinyscraper. GIF made with Giphy.
Manually typing out phone numbers to use for SpeedDial was brutallllll
Suddenly, console commands
Thanks to jQuery and the Chrome console, I figured out how to collect the phone numbers from the page of a Google search of an organization in a state (for ex, "Dairy Queen in Illinois"). I would enter code, wait a millisecond, get phone numbers back.
Getting the (in this case, only one) YWCA phone number from the search page with jQuery, JS, and the console.
However, rewriting the phone numbers in JavaScript syntax became brutallllll
Suddenly, string formatting
Thanks to string manipulation, I changed the code used so the console would output a copy-paste ready JavaScript array of the phone numbers.
However, pasting the console code and looking up the organization in every state became brutallllll
Suddenly, Chrome extension
I built a tool, tinyscraper, that makes a Google search for the phone numbers from every state in the USA of an organization I specify.
For example, if I want the phone numbers for the YWCA, I would input "YWCA" in an input field and submit it.
In response, tinyscraper collects the HTML for "ywca phone number [name of state here]" for every state and searches the HTML for the phone numbers.
tinyscraper would output the phone numbers in a JS-ready dictionary, thereby producing a very large dictionary with state abbreviations as the keys and an
array of phone numbers as the values.
Thanks to code, I was able to write code to help me write other code.
What would originally have taken days (to look up and collect multiple organizations!) now takes a few seconds, thanks to a few hours of work -- a significant fraction of the former.
---
Code is a tool.
Vivek
Thank you for visiting!
Vivek Bhookya


--- # jekyll header --- {% include header.html %} {% include container-start.html %}
The following profiles set the minimum expectations for the Argonaut Data Query resources to record, search and fetch health data associated with a Patient:
{% include list-simple-profiles.xhtml %} {% include container-end.html %} {% include footer.html %}


Anchor Yoghurt
Desserts / Yogurts / Set Yoghurt...
Popularity
(1,234 Ratings)
Price
Treemart Promotion Active
(was Rs.55.00)
Now Rs.45.00
Description
Anchor Drinking Yoghurt is made from locally-sourced fresh milk. It is low in fat and has only 7% added sugar content.
Quantity
Add to Cart
Go Back
Add to Favorites
Comments
View Comments Area
Close Comments Area


Select a pattern and hit draw! You can tweak parameters as you go.
Every pattern has a 'drawTime' property, which controls how quickly new data-points are added (in ms).


Gareth Bale's agent looking for Premier League home
Jonathan Barnett looking for a new place for Bale to play
by Alejandro AlcázarGareth Bale's agent Jonathan Barnett is looking for a Premier League home for the Welsh winger. Real Madrid aren't in favour of his eccentricities and the fan base are tired of his injuries.
Bale has not played for Madrid for a month, or trained, since getting injured with Wales on the last international break. However he is back with his country training for the next round of internationals this week.
Barnett might be able to take him to one of the London clubs. Madrid would be happy to let him go and save 35m euro for the next two years on his contract.
He is sounding out the London sides, inclujding Tottenham, where he arrived from - and their north London rivals Arsenal.


I noticed that my roommate had a bottle of strattera, the non-stimulant ADD medication, sitting on his dresser. I was bored, and even though I knew it wasn't the same, I figured that since most attention-sharpening medications were fun, I'd give it a try.
I popped 4 40mg capsules at about 12:30pm, and didn't really feel anything until about 2:00pm. The buzz wasn't intense, but was far beyond placebo. By around 3:00pm, it had become an odd feeling in my stomach, a heavy head, and sensitive eyes. I thought for sure that my pupils were dilated, but when I checked in a mirror, they looked normal. The stomach feeling was ok at first, but eventually was uncomfortable and just plain annoying. I had trouble keeping my eyes focused, and I started to get really tired.
I left and went over to a friend's room, when I started to crash. I felt like I was walking in rapidly-drying wet cement on the way there. So, rather than hanging out, I asked if I could lie down in my friend's bed, and I did.  My head was still swimming, but my body felt like I had been awake for days.
One interesting thing that did happen though was a tiny psychedelic effect. As I laid in bed, someone was below me watching tv. I can never sleep with a tv on in any normal circumstances, because I can't help paying attention to the sound. By listening to what was playing on the television, I was making a mental picture of what was on, and every time the channel would change the 'movie' in my mind would keep playing the same as it had, as if there had just been a change in the storyline. It was as one linear story, with many very odd plot turns. I would catch myself doing this, stop, but then it would happen again. I think it was because for the longest time I was stuck between sleeping and being awake.
Once I finally did get to sleep, I slept for about 3 hours. When I stood up my head felt very tired, with a little headache, and my body was still exhausted. I went to sleep again at about 1am, and still felt the after-affects all through the next day.
I will not be using atomoxetine again. The buzz is definately not worth the crash that it causes.
Stay Safe.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


MeloBox is a unique platform designed to help you achieve the ultimate listening experience. We help our users find new music, artists, and genres, as well as reconnect them with music of their past.
Stay up to date with the latest tracks in your country with our search-by-location feature, find artists similar to your favorites using our search-by-name feature, and discover if your favorite artist will be performing near you.
Our search engines are designed to help you find the music best suited to your tastes.
We have utilized APIs from last.fm and Bandsintown, and graphics from logomakr.com to improve our quality of our website and broaden our databases. The pictures used in the backgrounds are located on unsplash.com and come from various sources.
This website was created during the Girls Who Code Summer Immersion Program in 2018.
Eleanor is an aspiring aerospace engineer. When she's not listening to loud electronic music or reading tech news, she enjoys coding, screenwriting, and playing video games.
Puloma is an aspiring computer scientist / molecular biologist and an amateur astrophotographer. When she's not focused on science, she can be found playing video games, listening to music, and hiking.
Anjana is an avid music listener and budding computer scientist. In her free time, she enjoys singing, playing the piano, dancing, and coding.
Emily is an aspiring computer scientist. In her free time she enjoys singing, learning new songs on her piano or ukulele, playing videogames with friends, and trying new chilling facemasks.
Similar artists/Country Top Tracks: Powered by AudioScrobbler
Events via: bandsintown.com
Logo created with: logomakr.com
Digital Keyboard: michaelmp


A lib for interpolating values over a cubic Cardinal/Catmull-Rom spline curve of n-dimenesions.
npm install --save curve-interpolator
Reference the CurveInterpolator class:
// commonjs
const CurveInterpolator = require('curve-interpolator').CurveInterpolator;
// es6
import { CurveInterpolator } from 'curve-interpolator';
Define controlpoints you want the curve to pass through and pass it to the constructor of the CurveInterpolator to create an instance:
const points = [
[0, 4],
[1, 2],
[3, 6.5],
[4, 8],
[5.5, 4],
[7, 3],
[8, 0],
...
];
const interp = new CurveInterpolator(points, { tension: 0.2 });
// get single point
const position = 0.3 // [0 - 1]
const pt = interp.getPointAt(position)
// get points evently distributed along the curve
const segments = 1000;
const pts = interp.getPoints(segments);
// lookup values along x and y axises
const axis = 1;
const yintersects = interp.lookup(7, axis);
/*
max number of solutions (0 = all (default), 1 = first, -1 = last)
A negative max value counts solutions from end of curve
*/
const axis = 0;
const max = -1;
const xintersects = interp.lookup(3.2, axis, max);
// get bounding box
const bbox = interp.getBoundingBox();
Online example on ObservableHQ:
Docs are generated using typedoc in ./docs
. To create:
npm run docs
Online: https://kjerandp.github.io/curve-interpolator/
MIT
Generated using TypeDoc


IoTgo provides a RESTful Web API to interact with clients (Web App, Mobile App, Desktop App, etc.).
The general process is as follows:
Client sends HTTP request to IoTgo.
IoTgo does some validation against the request.
If the validation failed, IoTgo will reply with proper response code and reason.
If the validation succeeded, IoTgo will continue processing the request, and reply with 200 OK status code and process result encoded in JSON format.
Client checks the response from IoTgo.
If the status code is not 200 OK, then the request is probably illegal or bad formed.
If the status code is 200 OK, but the data (JSON format) has an error
property, then the request still fails. The value of error
property is the reason of failure.
If the status code is 200 OK, and there is no error
property in the data, then the request succeeds (finally!). Extract the data and do whatever you want :smiley:
IoTgo is also using JSON Web Token to protect Web API, so most of these Web API requests must carry Authorization
header with JSON Web Token
obtained from register
or login
request.
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1NDYxNjQ1NGM4ODIzNzFlMWMxOTcyNmYiLCJlbWFpbCI6ImhvbGx5LmhlQGl0ZWFkLmNjIiwiY3JlYXRlZEF0IjoiMjAxNC0xMS0xMVQwMToyMDoyMC4yNjFaIiwiYXBpa2V5IjoiMTU3ODNmZDYtMDc1MS00ODBmLTllMzAtNWZmZTNhNWM4MTM1IiwiaWF0IjoxNDE1NjczNTExfQ.e-gi5N8AIGVeBA5S6vYg9cEaCSGnaFUCscIsYQ2kXoI
Register an account on IoTgo. Authorization not required
Request method: POST
Request body:
{
"email"<EMAIL_ADDRESS>"password": "password"
}
Response body:
{
"jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6InRlc3RAaXRlYWQuY2MiLCJfaWQiOiI1NDY1YTVmMDdmZGRlYjkwNjlhZDJlZDQiLCJjcmVhdGVkQXQiOiIyMDE0LTExLTE0VDA2OjQ5OjIwLjgyMloiLCJhcGlrZXkiOiJiNDVjMWU2MS05NjRhLTRhZDMtOWI5ZC0wYjk3YWM5NWZlMTQiLCJpYXQiOjE0MTU5NDc3NjB9.Rh8BLA7KPs4R74djwKCnHtM1ETYqFXmSIl1IRAbroWI",
"user": {
"email"<EMAIL_ADDRESS>"createdAt": "2014-11-24T06:49:20.822Z",
"apikey": "b45c1e61-964a-4ad3-9b9d-0b97ac95fe14",
}
}
Log in IoTgo using email address and password. Authorization not required
Request method: POST
Request body:
{
"email"<EMAIL_ADDRESS>"password": "password"
}
Response body:
{
"jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6InRlc3RAaXRlYWQuY2MiLCJfaWQiOiI1NDY1YTVmMDdmZGRlYjkwNjlhZDJlZDQiLCJjcmVhdGVkQXQiOiIyMDE0LTExLTE0VDA2OjQ5OjIwLjgyMloiLCJhcGlrZXkiOiJiNDVjMWU2MS05NjRhLTRhZDMtOWI5ZC0wYjk3YWM5NWZlMTQiLCJpYXQiOjE0MTU5NDc3NjB9.Rh8BLA7KPs4R74djwKCnHtM1ETYqFXmSIl1IRAbroWI",
"user": {
"email"<EMAIL_ADDRESS>"createdAt": "2014-11-24T06:49:20.822Z",
"apikey": "b45c1e61-964a-4ad3-9b9d-0b97ac95fe14",
}
}
Change password for the user identified by JSON Web Token. Authorization required
Request method: POST
Request body:
{
"oldPassword": "old password",
"newPassword": "new password"
}
Response body:
{}
Create new device by using POST request, get the list of devices owned by user by using GET request. Authorization required
Request method: POST
Request body:
{
"name": "Switch",
"group": "ITEAD",
"type": "01"
}
Response body:
{
"name": "Switch",
"group": "ITEAD",
"type": "01",
"deviceid": "0100000001",
"apikey": "b45c1e61-964a-4ad3-9b9d-0b97ac95fe14",
"createdAt": "2014-11-24T02:27:41.363Z"
}
Request method: GET
Response body:
[{
"name": "Switch",
"group": "ITEAD",
"type": "01",
"deviceid": "0100000001",
"apikey": "b45c1e61-964a-4ad3-9b9d-0b97ac95fe14",
"createdAt": "2014-11-24T02:27:41.363Z"
}]
Get detailed device information by using GET request, update device name and group by using POST request, delete device by using DELETE request. Authorization required
Request method: GET
Response body:
{
"name": "Switch",
"group": "ITEAD",
"type": "01",
"deviceid": "0100000001",
"apikey": "b45c1e61-964a-4ad3-9b9d-0b97ac95fe14",
"createdAt": "2014-11-24T02:27:41.363Z",
"params": {
"switch": "on"
},
"lastModified": "2014-11-27T02:27:41.363Z"
}
Request method: POST
Request body:
{
"name": "New Name",
"group": "New Group"
}
Response body:
{
"name": "New Name",
"group": "New Group",
"type": "01",
"deviceid": "0100000001",
"apikey": "b45c1e61-964a-4ad3-9b9d-0b97ac95fe14",
"createdAt": "2014-11-24T02:27:41.363Z",
"params": {
"switch": "on"
},
"lastModified": "2014-11-27T02:27:41.363Z"
}
Request method: DELETE
Response body:
{
"name": "New Name",
"group": "New Group",
"type": "01",
"deviceid": "0100000001",
"apikey": "b45c1e61-964a-4ad3-9b9d-0b97ac95fe14",
"createdAt": "2014-11-24T02:27:41.363Z",
"params": {
"switch": "on"
},
"lastModified": "2014-11-27T02:27:41.363Z"
}
Add indie device which is manufactured by ITEAD or ITEAD licensed manufacturers. Authorization required
Request method: POST
Request body:
{
"name": "Lamp",
"group": "Indie",
"deviceid": "0280000001",
"apikey": "f44eeb0b-8a9e-4454-ad51-89beb93b072e"
}
Response body:
{
"name": "Lamp",
"group": "Indie",
"deviceid": "0280000001",
"apikey": "f44eeb0b-8a9e-4454-ad51-89beb93b072e",
"createdAt": "2014-11-27T02:49:42.000Z",
"params": {}
}
Log in IoTgo admin area using email address and password. Authorization not required
Request method: POST
Request body:
{
"email"<EMAIL_ADDRESS>"password": "password"
}
Response body:
{
"jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6InRlc3RAaXRlYWQuY2MiLCJfaWQiOiI1NDY1YTVmMDdmZGRlYjkwNjlhZDJlZDQiLCJjcmVhdGVkQXQiOiIyMDE0LTExLTE0VDA2OjQ5OjIwLjgyMloiLCJhcGlrZXkiOiJiNDVjMWU2MS05NjRhLTRhZDMtOWI5ZC0wYjk3YWM5NWZlMTQiLCJpYXQiOjE0MTU5NDc3NjB9.Rh8BLA7KPs4R74djwKCnHtM1ETYqFXmSIl1IRAbroWI",
"user": {
"email"<EMAIL_ADDRESS>"isAdmin": true
}
}
Get the list of registered users on IoTgo.  Authorization required
Request method: GET
Response body:
{
"email"<EMAIL_ADDRESS>"apikey": "ea62c15b-d194-4b16-a56e-7ad8433c5477",
"createdAt": "2014-11-27T02:50:10.000Z"
}
Request method: DELETE
Response body:
{
"email"<EMAIL_ADDRESS>"apikey": "ea62c15b-d194-4b16-a56e-7ad8433c5477",
"createdAt": "2014-11-27T02:50:10.000Z"
}
Get the list of created/added devices on IoTgo. Authorization required
Request method: GET
Response body:
[{
"name": "Switch",
"group": "ITEAD",
"type": "01",
"deviceid": "0100000001",
"apikey": "b45c1e61-964a-4ad3-9b9d-0b97ac95fe14",
"createdAt": "2014-11-24T02:27:41.363Z"
}]
Get detailed device information. Authorization required
Request method: GET
Response body:
{
"name": "Switch",
"group": "ITEAD",
"type": "01",
"deviceid": "0100000001",
"apikey": "b45c1e61-964a-4ad3-9b9d-0b97ac95fe14",
"createdAt": "2014-11-24T02:27:41.363Z",
"params": {
"switch": "on"
},
"lastModified": "2014-11-27T02:27:41.363Z"
}
Get issued licenses (for licensing indie devices) on IoTgo. Authorization required
Request method: GET
Response body:
[{
"name": "ITEAD",
"type": "01",
"deviceid": "0180000001",
"apikey": "94b38bbe-57c8-49bf-a6c4-2871ee5bb873",
"createdAt": "2014-11-27T02:50:20.000Z"
},
{
"name": "ITEAD",
"type": "01",
"deviceid": "0180000002",
"apikey": "938a8f4f-9f0f-424b-b5ac-f58b8f7a539c",
"createdAt": "2014-11-27T02:50:20.000Z"
}]
Generate new licenses for indie devices. Authorization required
Request method: POST
Request body:
{
"name": "ITEAD",
"type": "02",
"qty": 2
}
Response body:
[{
"name": "ITEAD",
"type": "02",
"deviceid": "0280000001",
"apikey": "37e45852-a381-4243-8bfe-cc3c4c2becab",
"createdAt": "2014-11-27T03:00:00.000Z"
},
{
"name": "ITEAD",
"type": "02",
"deviceid": "0280000002",
"apikey": "41556a98-7685-424f-bc27-74bf712108b2",
"createdAt": "2014-11-27T03:00:00.000Z"
}]
IoTgo provides Device API to interact with devices. Device API is also intended be used by clients (Web App, Mobile App, Desktop App, etc.) to control connected devices.
Device API is JSON-based, which means all request and response data is enclosed in JSON format. IoTgo currently supports 3 kind of request.
apikey
of current user who owns the device, only applies to indie device.Request:
{
"action": "register",
"deviceid": "01ad0253f2",
"apikey": "123e4567-e89b-12d3-a456-426655440000"
}
Note: register
request is only for indie devices, not DIY devices. So deviceid
and apikey
above are generated by IoTgo for licensed manufacturers.
Response:
{
"error": 0,
"deviceid": "01ad0253f2",
"apikey": "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
}
error: 0
denotes a successful response. If the error
property is not 0
, then error occurs, and reason
property will exist for detailed error information. This is also true for Update
and Query
request.
Note: apikey
in a successful response is the user currently owns the indie device.
Request:
{
"action": "update",
"deviceid": "01ad0253f2",
"apikey": "123e4567-e89b-12d3-a456-426655440000",
"params": {
"switch": "on"
}
}
Note: params
property is a JSON object which contains all status information of the device.
Response:
{
"error": 0,
"deviceid": "01ad0253f2",
"apikey": "123e4567-e89b-12d3-a456-426655440000"
}
Note: deviceid
and apikey
have the same values as they do in the request.
Request:
{
"action": "query",
"deviceid": "01ad0253f2",
"apikey": "123e4567-e89b-12d3-a456-426655440000",
"params": [
"switch"
]
}
Note: params
property is an array containing status names to be queried. Empty array denotes querying all status.
Response:
{
"error": 0,
"deviceid": "01ad0253f2",
"apikey": "123e4567-e89b-12d3-a456-426655440000",
"params": {
"switch": "on"
}
}
Note: deviceid
and apikey
have the same values as they do in the request.
Device API request and response can be carried by any reliable transfer protocol, and IoTgo supports both HTTP and WebSocket.
We strongly recommend WebSocket over HTTP because WebSocket enables IoTgo to push device status update to both the actual device and device owner's clients
Device API access point is http://iotgo.iteadstudio.com/api/http.
Request header:
POST /api/http HTTP/1.0
Host: iotgo.iteadstudio.com
Content-Type: application/json
Content-Length: 116
Note: Host header must be present even if HTTP 1.0 itself does not require it.
Device API access point is http://iotgo.iteadstudio.com/api/http.
Request header:
POST /api/http HTTP/1.1
Host: iotgo.iteadstudio.com
Content-Type: application/json
Content-Length: 116
Device API access point is ws://iotgo.iteadstudio.com/api/ws.


All Classes
AdaptationAnalyzer
Analyzer
Capability
ComparchSimulator
ComparchSimulatorException
ComparchSimulatorFactory
Injection
InjectionStrategy
Injector
IssueType
ModelAnalyzer


Questions
-
- Show something off
- Disregard (the rules)
-
- Continuous
- Contiguous
- Continual
- Constant
- Unchanging
- Recurring
- Unbroken in space.
- Unbroken in time.
-
- Most important
- Rule or theory
-
- Deduce
- Say something indirectly
-
- To influence something.
- The result of an influence
-
- Saying a nice thing
- Goes well together
-
- Still
- Writing equipment
-
- When something's against you.
- When you have a distaste for something.
-
- Harmful if swallowed.
- Has a toxic bite.
-
- Inflicted pain.
- Has many twists and turns.


BLIND DATE A film review by Steve Fritzinger Copyright 1987 Steve Fritzinger
Walter has a problem. He needs a date for a dinner party being thrown for one of his firms biggest clients. His regular girlfriend has stood him up at the last minute, and now he's desperate.
Walter finally accepts a blind date with Nadia, a friend of his sister-in-law, and, ignoring the warnings of his sister-in-law, allows her to drink. After all, Nadia is a charming and beautiful woman. What harm could come from sharing one bottle of champagne?
Unfortunately, no one told Walter that Nadia is a hopeless dipsomaniac who, after just one drink, gains the destructive force of a tornado. Walter, of course, has a miserable night. Over the next 6 hours, he is the butt of every slapstick gag known. In addition to being mugged, jailed, and fired he ends up in love, and responsible for saving Nadia from the plotting of her unscrupulous ex-fiance.
BLIND DATE has everything you would expect from a Blake Edwards movie, except Julie Andrews. The dialogue is funny, the slapstick is funny, and the pacing is good. For high-concept comedy, it's pretty good, but there are several problems. At first Bruce Willis struggles against his David Adison image, playing Walter as a disorganized portfolio analyst with no style or social skills, but then falls into his "Moonlighting" persona. Kim Bassinger gives a good performance as Nadia, but the role requires that she only behave drunkenly and then helpless, so there isn't much room for depth. It also has the one hundredth movie dog named Rambo this year, and several running jokes that quickly become stale and predictable.
I rate it at +1 on the -4 to +4 scale.
Steve Fritzinger CCI-OSD Reston, Va. seismo!rlgvax!jsf
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


c:
Work
Contact
Hey there! I'm Cody VerKuilen.
Front-end Designer from CT
Creating impactful and fun experiences on the web has been my jam for the past 9+ years.
View Work


{%extends 'shop/base.html'%} {%load static%} {% block title %}About Us{%endblock%} {%block navabout%}
Happiness should be a function without any paramters.
Team ? Ohh I Dont have a Team. Don't get it Twisted, I am my own Team. Do what you have to do, to do
what you want to do.
 Why Hire Me ?
 Jokes
Apart , Don't Judge Me on My Achievements Judge Me on My Failures Bcoz They Are very Few, Actually I
never Fail I Either Learn or Win


Igbo Basic 1.0 generated from template.
This keyboard makes use of SHIFT+RALT keys which are set by default when Keyman is installed. To use this keyboard, you must go to Configuration.../Hotkeys and select the hotkey for "Switch Keyman Desktop Off". Either change the hotkey or turn it off. Do the same for "Open Keyboard Menu" and for "Open Language Switcher".
This keyboard utilizes deadkeys:
| a | e | i | o | u | A | E | I | O | U | Spacebar | |
| ◌̀ | à | è | ì | ò | ù | À | È | Ì | Ò | Ù | ` |
| ◌́ | á | é | í | ó | ú | Á | É | Í | Ó | Ú | ~ |
| ◌̄ | ā | ē | ī | ō | ū | Ā | Ē | Ī | Ō | Ū | ^ |
Default Layer
Shift Layer
Numeric Layer
Due to the size and number of keys, some characters are hidden in the long press. Press and hold on the key with a little dot on the top right to reveal them.
The three diacritic on right most of both default and shift layers are not visible enough on Android. Hope font update would improve their visibility.
© 2019 SIL International


| Path: | lib/features/localized_date_helpers.rb |
| Last Update: | Mon Jun 25 20:25:44 +0200 2007 |
Localizes the date_select helper by loading the default options from the language file. The distance_of_time_in_words however can only be localized by reimplementing it here. Every result is based on a string from the language file.
Many other helpers are based on these two so the localization of these helpers should localize many other.
This feature uses the date_select and distance_of_time_in_words section within the helpers section:
helpers: date_select: order: [:year, :month, :day] distance_of_time_in_words: less than 5 seconds: less than 5 seconds less than 10 seconds: less than 10 seconds less than 20 seconds: less than 20 seconds less than a minute: less than a minute 1 minute: 1 minute half a minute: half a minute n minutes: %i minutes about 1 hour: about 1 hour about n hours: about %i hours 1 day: 1 day n days: %i days about 1 month: about 1 month n months: %i months about 1 year: about 1 year over n years: over %i years
The date_select section contains new default options for the date_select helper so you can overwrite all options this helper accepts. The distance_of_time_in_words section contains a map of translated strings used to build the output of this helper.


About the theme
The calade theme started its life as a fork of Yihue Xie’s Xmin theme, which I had started to tinker with because I wanted to better understand the internal workings of Hugo and blogdown. One of the things I really liked about Xmin is its simplicity. There are very few moving parts to the theme which makes it much less intimidating for novice users than (say) the academic theme, which is a wonderful theme but also a rather complicated one. After deciding that I didn’t want or need all that complexity for my own website, I worked on extending the Xmin theme to have “just enough” functionality for my purposes. The visual style draws some elements from Xmin, others from academic, and others from the Tufte R markdown theme. Mostly though it was designed to suit my own aesthetic sensibilities.
About the name
After initially choosing a less-than-ideal name for the theme, I eventually settled on naming the theme calade, a French word referring to “harmonious, decorative and useful arrangement of medium-sized pebbles, fixed to the ground” and suggested to me by John Ormerod. It appeals to me as a metaphor for the way I like to design websites. Each page is a small object held in place by an overall structure, organised in a fashion that serves a specific, useful purpose. In addition to being functional, a good site should be aesthetically pleasing and harmonious. Also the banner images on this site kind of look like cobblestones so it seemed appropriate.
The name of the caladown package is (obviously) in part a reference to the name of the calade theme, using the “-down” suffix in reference to markdown, blogdown, hugodown etc. It also has some meaning of its own. Olivia Guest pointed out that “cala” (“Καλά”) means “good” in Greek, and there is something appealing about “gooddown” as a name. Matt Craddock alerted to me that in Spanish “cala” means “cove”, which I really ought to have known for myself but I’ve forgotten almost all my Spanish. Sigh. In any case, it seems a particularly appropriate reference for the package: a sheltered bay is a safe place to moor a ship, and the primary function of caladown is to simplify the installation process.
About the author
Danielle Navarro is a computational cognitive scientist and Associate Professor at the University of New South Wales. Her research focuses on human reasoning and statistical methods in the behavioural sciences. On occasions she has been known to masquerade as a part-time statistician, data scientist and an unskilled software developer. She is also a devoted R-Lady, an aspiring generative artist, and at times a general purpose nuisance. She is prone to describing herself in the third person in biographies, but is willing to admit that it’s super weird.


This Admin site provide a list and a map view of the restaurants and service providers.
restaurant location: 1635 28th St, Boulder, CO 80302
customer location: 1475 Folsom st., Boulder, CO 80302
restaurant location: 1738 Pearl St, Boulder, CO 80302
customer location: 1567 Folsom st., Boulder, CO 80302


1/2 kg Basmati rice, washed (for better results I highly recommend Basmati reis)
1/2 kg potatoes peeled, washed and coarsely chopped
1/2 kg beef, chicken or fish filet cubed
1 small cup sunflower oil (or any other liquid oil)
4 cups of hot water or broth
1 onion, chopped
5 cloves of Garlic, crushed
1 fresh Ginger, crushed
2 fresh Tomatoes , sliced
2-3 teaspoon Pilau spices
Salt and pepper to taste
Procedure (1hour)
Boil beef or chicken with ginger for 10 minutes. Add potatoes and let them boil for 5 minutes then set aside (separate the cooked ingredients from the broth so you can use it later)
Heat oil and fry onions till light brown, add garlic and Pilau spices and on a low heat, fry for 1 minute
Add tomatoes meat/chicken with potatoes and cook till tender
Add rice and ensure to mix everything very well before adding your broth or hot water then stir the mixture very well
Add salt and pepper to taste then cover the pot and cook on medium heat
When the Food is nearly dry, lower down the heat to very low, cover your Pilau with aluminium paper (please avoid newspapers or polythene papers) and place the lid on top. Leave to cook for 10 minutes .
Here you are, your Pilau is ready!
Serve your Pilau hot with Kachumbari and Pilipili ya Maembe
A banana can also be used for garnishing
Some like to serve it with a tasty tomato sauce or beef/chicken stew on the side which is also very nice.
 Garlic and ginger blended or thinly sliced. Coriander thinly chopped and tomatoes and onions diced.
First stir fry your onions and ginger and garlic until slightly brown then add the chicken.
Cook the chicken for a while to let it soak up the ginger and garlic flavour.
Finally add the tomatoes and coriander. Cook until the tomatoes form a thick stew.


Tuesday, 09 October 2018
Dig deep!
Get this article read to you.
A couple of weeks ago I found myself setting up an e-books server that was supposed to store my ever growing “Books I’d like to but I’ll rarely find the time to read” collection. That imposed an interesting network problem I had to solve. I had a large external drive connected to another machine that I wanted to utilize, however, setting up a Samba server wasn’t something I wanted to spend several cups of coffee on and NFS wasn’t an option for me either. It occurred to me that I should be able to achieve my goal using SSH.
First, I must say, I just love this idea. Using SSH as means to provide seamless file I/O operations and access control via asymmetric crypto is something I’ll always consider from now on. The tool behind this is sshfs. It’s being frequently updated and one may be sure to find it in their package manager.
However, there are a couple of things to consider.
Here’s a simplified workflow on what happens behind the scenes.
I have prepared two setup use cases - one based on Linux that I’m currently using and another one for macOS, which I mostly did for research purposes. It is most certainly possible to use sshfs on Windows, however, I have not done any setup research in that direction.
Install sshfs on Server A via aptitude:
sudo apt-get install sshfs
Install FUSE (Filesystem in Userspace) via aptitude:
sudo apt-get install fuse
You would need to load the fuse
module via:
modprobe fuse
Check if the module is loaded via:
lsmod | grep fuse
Run ssh-keygen
on Server A to generate a key pair.
Copy the public key in $HOME/.ssh/id_rsa.pub
from Server A and paste it to $HOME/.ssh/authorized_keys
on Server B. Or just use scp
to copy the file over.
Create a target mount point and mount it to Server A, e.g.,
mkdir $HOME/mountpoint
sshfs bob@server-b:/var/storage $HOME/mountpoint
You now have access to Server B’s storage space. To unmount run:
fusermount -u $HOME/mountpoint
It’d be great to have this run as a service, so if Server A reboots, the mount point gets setup automatically. For systems using systemd we can do that the following way:
Create a mount
file in your $HOME
(or any other accessible) directory.
#!/bin/sh
CMD="$1"
MNT="/home/mountpoint"
TARGET="/var/storage/"
start() {
exec sshfs bob@server-b:$TARGET $MNT
}
stop() {
fusermount -u $MNT
}
case $1 in
start|stop) "$1" ;;
esac
As a root
user, create a bob-mount.service
file in /lib/systemd/system
and add the following inside:
[Unit]
Description=Server B Mount Service
After=network.target
[Service]
User=alice
Group=alice
Type=forking
ExecStart=/home/alice/mount start
ExecStop=/home/alice/mount stop
[Install]
WantedBy=multi-user.target
Start and stop the service via:
systemctl start bob-mount
systemctl stop bob-mount
Enable the service to run at boot time:
systemctl enable bob-mount
Installation on macOS is pretty similar. Use brew to install the following:
brew install Caskroom/cask/osxfuse
brew install Caskroom/cask/sshfs
You should see FUSE for macOS
in your System Preferences afterwards. To mount a share run:
mkdir $HOME/mountpoint
sshfs bob@server-b:/var/storage $HOME/mountpoint
To unmount just run:
unmount $HOME/mountpoint
An easy way to mount after reboot is to create a mount script and put it in the crontab
.


Setup
Danger
This page might not be fully up to date, I'll try keep this up to date as much as possible.
I also try to not change around the Config file too much, but if that happens keep in mind:
This plugin is still under development, so deal with it ♥
Dependencies
YAP (Yet Another Plugin) has a couple dependencies in order to work.
If one of these plugins are not present or loaded YAP won't be able to be enabled.
Plugin Dependencies
- PlaceholderAPI ^2.10
- mcMMO ^2.1
Java Dependencies
Java dependensies are only important for contributors
- JavaCord ^3.0.4
Configration Breakdown
config.discord
In this namespace you have to provide the important data such as the Discord Bot Token and other important information.
discord.token
discord.token
only takes the Discord Bot Token, if you use something else YAP won't load and will cause errors.
discord.prefixes
discord.prefixes
takes a list of Strings and those will be used as the prefixes for Discord commands. If none are given the default prefix will be !
config.modules
In this namespace we change the configs of the modules within YAP.
modules.advancements
modules.connections
modules.cross-chat
Default Configuration
config:
# These settings are really important to make this plugin actually do something.
# discord.token only takes the Discord Bot Token, if you use something else this plugin won't work!
# discord.prefixes takes a list with Strings and those are the prefixes for the Discord Commands if none given default will be "!"
discord:
token: ''
prefixes:
- ''
modules:
# This module when enabled will sent advancements earned by players straight to the assigned Discord channels.
# This module uses their own formats and for now these are not editable, maybe in the near feature!
# They look like this: "**{username}** just obtained their first diamond and made the advancement [**{advancement}**]"
advancements:
enabled: false
channels:
- ''
# This module when enabled will sent a message upon player join and player leave to the assigned Discord channels.
# Formats are editable and since the plugin hooked is with PlaceholderAPI you can use those placeholders too.
connections:
enabled: false
join:
enabled: true
format: '\🟢 | **{username}** entered the server, have fun!'
channels:
- ''
quit:
enabled: true
format: '\🔴 | **%s** left the server, come again!'
channels:
- ''
cross-chat:
enabled: false
to-minecraft:
enabled: true
format: ''
channels:
- ''
to-discord:
enabled: true
# Methods are the way the Minecraft to Discord message will be delivered.
# webhook: is the default method and to my opinion the better looking one.
# bot: is the other method and is a bit more basic but has a format option.
# More explanations are available on the plugin wiki on Github.
# https://github.com/kawaaii-programming/YetAnotherPlugin/wiki/Modules#methods
method: 'webhook'
# This only works if method is set to 'bot'
format: '**{username}**: {message}'
channels:
- ''
# This works only if methid is set to 'webhook'
webhooks:
- ''


Form SettingsThe dialog box Edit form is used for creating/editing a form. Here, you can build up a table and add the different form fields as you want. You can also select the properties each field is to have.
Building up the formIn the lower part of Edit form you create a table with the buttons below the table. Add row is always placed at the bottom of the table. Add column is always placed furthest right in the table. If you select Insert row you can insert a row above the row that is currently selected. Insert column opens a column to the left of the selected column. Select a row or column by clicking on an inserted field in the cell. If there are no fields in the table, you can start by dragging in a field.Position the various fields by grabbing the field in question at the right edge and dragging it to the required position in the table. Each cell in the table can only contain one form field. When you have dragged a form field into the cell, the settings for the relevant field type will be opened to the right of the table. Depending on the field you have selected, you need to make various settings. Some properties exist in all types of field, and some in all input fields. These properties exist in all fields: CSS classis a field where you can define a CSS class (format) for what the field should look like. The class must be present in the CSS file used for the Web site. Contact your system administrator for more information.Nameis the field where you define a name for the field, which enables you to know which field the visitor has filled in. The simplest thing is to use the same or similar name to the one you used in the heading field which belongs to the field. You can only use A-Z, a-z, 1-9 and _. Spaces cannot be used.Headingcan be created in a field of its own, or you can write it in conjunction with the input field. If you write it in conjunction with the input field, the heading will be displayed to the left of the field. This alternative should be selected in order to make the form highly accessible. A heading is the text to be displayed to visitors so that they know what to fill in.Screen tipsis a field where you can give visitors more information about what to fill in. The text in the screen tip is displayed when you move the mouse over the input field.Value must be enteredis a field that means that you are forcing the visitor to enter a value in the field. If the visitor leaves the field empty, an error message is displayed saying that the field must be filled in. The error message refers first to the text you have specified in the heading field. If you do not have any heading, it refers to whatever you have entered in the Name field.Validate asis a field that enables you to check whether the visitor has filled in the right type of information in a field. You can check whether it is an e-mail address, check various date formats and various types of numbers.When all the properties for each field have been completed, the button Save will be shown under the properties. You must save each individual field and its settings. If you want to delete a field, select the Delete button under the field's properties. HeadingHeading is the field type used to let visitors know what they should enter in each field.
Text fieldText field is the field type which gives visitors an input field in the form of a row in which they can enter text. This is used for short text information you want the visitor to enter.
ButtonUse of this button to give visitors a button to press when they want to send in the form.
Text areaText area is the field type which gives visitors a large area in which to type in text. You can decide the width of the area in terms of characters and how many rows the field should have.
Select boxThe Select box is the field type which gives visitors a pull-down menu in which they can select one of several alternatives which you have specified.
Radio buttonThe Radio button is the field type which gives visitors a list of options in which they can select one of several alternatives which you have specified.
CheckboxCheckbox is the field type which gives visitors a list of various options, from which they can select one of several alternatives that you have specified.
When the form is complete and all fields and their properties have been saved, save the entire form with the Save button in the middle of the Edit form dialog box. Save and publish the page. The Form Data tabIf you chose to save the information in the database in your form, you can find all the forms which have been submitted under the Form data tab. This tab is displayed next to the Version list when you have saved and published your form page. This is what you do to retrieve data from the database:
When you have searched for the submitted forms, they will be listed below the search form. You can browse amongst pages if there are many of them, and you can also choose to delete all visible contributions from here. If you want to process the information in Microsoft Excel, select the Export to Excel button. To do this, Excel must be installed on your computer. A software component must also be installed on your computer. You can read more about this under Personalize EPiServer in the Editor's manual.
|
|
Läs mer i Redaktörshandboken - Läs mer i Administratörshandboken |


YearWeek
Extends:
A year-week in the ISO week date system such as 2015-W13
YearWeek is an immutable date-time object that represents the combination of a week-based-year and week-of-week-based-year. Any field that can be derived from those two fields can be obtained.
This class does not store or represent a day, time or time-zone. For example, the value '13th week of 2007' can be stored in a YearWeek.
The ISO-8601 calendar system is the modern civil calendar system used today in most of the world. It is equivalent to the proleptic Gregorian calendar system, in which today's rules for leap years are applied for all time. For most applications written today, the ISO-8601 rules are entirely suitable. However, any application that makes use of historical dates, and requires them to be accurate will find the ISO-8601 approach unsuitable.
ISO-8601 defines the week as always starting with Monday. The first week is the week which contains the first Thursday of the calendar year. As such, the week-based-year used in this class does not align with the calendar year.
Static Method Summary
| Static Public Methods | ||
| public static |
Obtains an instance of YearWeek from a temporal object. |
|
| public static |
Function overloading for YearWeek.now:
|
|
| public static |
Function overloading for YearWeek.of:
|
|
| public static |
parse(text: string, formatter: DateTimeFormatter): YearWeek Obtains an instance of YearWeek from a text string using a specific formatter. |
| Static Protected Methods | ||
| protected static |
Obtains the current year-week from the system clock in the default time-zone. |
|
| protected static |
Obtains the current year-week from the specified clock. |
|
| protected static |
_nowZoneId(zone: ZoneId): YearWeek Obtains the current year-week from the system clock in the specified time-zone. |
|
| protected static |
_ofWeekBasedYear(weekBasedYear: number, week: number): YearWeek Obtains an instance of YearWeek from a week-based-year and week. |
|
| protected static |
_ofYearWeek(year: Year, week: number): YearWeek Obtains an instance of YearWeek from a year and week. |
Method Summary
| Public Methods | ||
| public |
adjustInto(temporal: Temporal): Temporal Adjusts the specified temporal object to have this year-week. |
|
| public |
Combines this year-week with a day-of-week to create a LocalDate. |
|
| public |
Compares this year-week to another |
|
| public |
equals(obj: *): boolean Checks if this year-week is equal to another year-week. |
|
| public |
format(formatter: DateTimeFormatter): string Formats this year-week using the specified formatter. |
|
| public |
get(field: TemporalField): number Gets the value of the specified field from this year-week as an |
|
| public |
getLong(field: TemporalField): number Gets the value of the specified field from this year-week as a |
|
| public |
hashCode(): number A hash code for this year-week. |
|
| public |
is53WeekYear(): boolean Checks if the week-based-year has 53 weeks. |
|
| public |
Is this year-week after the specified year-week. |
|
| public |
Is this year-week before the specified year-week. |
|
| public |
isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean function overloading for YearWeek.isSupported
|
|
| public |
lengthOfYear(): number Returns the length of the week-based-year. |
|
| public |
minusWeeks(weeksToSubtract: number): YearWeek Returns a copy of this year-week with the specified number of weeks subtracted. |
|
| public |
minusYears(yearsToSubtract: number): YearWeek Returns a copy of this year-week with the specified number of years subtracted. |
|
| public |
Returns a copy of this year-week with the specified number of weeks added. |
|
| public |
Returns a copy of this year-week with the specified number of years added. |
|
| public |
query(query: TemporalQuery): * Queries this year-week using the specified query. |
|
| public |
range(field: TemporalField): ValueRange Gets the range of valid values for the specified field. |
|
| public |
toString(): string Outputs this year-week as a String, such as |
|
| public |
until(endExclusive: Temporal, unit: TemporalUnit): number Calculates the amount of time until another year-week in terms of the specified unit. |
|
| public |
week(): number Gets the week-of-week-based-year field. |
|
| public |
Returns a copy of this YearWeek with the week altered. |
|
| public |
Returns a copy of this YearWeek with the week-based-year altered. |
|
| public |
year(): number Gets the week-based-year field. |
| Protected Methods | ||
| protected |
_isSupportedField(field: TemporalField): boolean Checks if the specified field is supported. |
|
| protected |
_isSupportedUnit(unit: TemporalUnit): boolean Checks if the specified unit is supported. |
Static Public Methods
public static from(temporal: Temporal): YearWeek source
Obtains an instance of YearWeek from a temporal object.
This obtains a year-week based on the specified temporal. A TemporalAccessor represents an arbitrary set of date and time information, which this factory converts to an instance of YearWeek.
The conversion extracts the IsoFields.WEEK_BASED_YEAR WEEK_BASED_YEAR and IsoFields.WEEK_OF_WEEK_BASED_YEAR WEEK_OF_WEEK_BASED_YEAR fields. The extraction is only permitted if the temporal object has an ISO chronology, or can be converted to a LocalDate.
This method matches the signature of the functional interface TemporalQuery allowing it to be used in queries via method reference, YearWeek.FROM.
Params:
| Name | Type | Attribute | Description |
| temporal | Temporal | the temporal object to convert, not null |
Throw:
if unable to convert to a YearWeek |
public static now(zoneIdOrClock: ZoneId | Clock): YearWeek source
Function overloading for YearWeek.now:
- if called with no arguments, YearWeek._now0 is executed;
- if called with an instance of ZoneId, then YearWeek._nowZoneId is executed;
- if called with an instance of Clock, then YearWeek._nowClock is executed;
- otherwise IllegalArgumentException is thrown.
public static of(year: Year | number, week: number): YearWeek source
Function overloading for YearWeek.of:
- if called with an instances of Year and
int
, then YearWeek._ofYearWeek is executed; - if called with an instances of number and
int
, then YearWeek._ofWeekBasedYear is executed; - otherwise IllegalArgumentException is thrown.
Params:
| Name | Type | Attribute | Description |
| year | Year | number | the year to represent, not null |
|
| week | number | the week-of-week-based-year to represent, from 1 to 53 |
public static parse(text: string, formatter: DateTimeFormatter): YearWeek source
Obtains an instance of YearWeek from a text string using a specific formatter.
The text is parsed using the formatter, returning a year-week.
Params:
| Name | Type | Attribute | Description |
| text | string | the text to parse, not null |
|
| formatter | DateTimeFormatter |
|
the formatter to use, default is YearWeek.PARSER |
Throw:
if the text cannot be parsed |
Static Protected Methods
protected static _now0(): YearWeek source
Obtains the current year-week from the system clock in the default time-zone.
This will query the Clock.systemDefaultZone system clock in the default time-zone to obtain the current year-week. The zone and offset will be set based on the time-zone in the clock.
Using this method will prevent the ability to use an alternate clock for testing because the clock is hard-coded.
protected static _nowClock(clock: Clock): YearWeek source
Obtains the current year-week from the specified clock.
This will query the specified clock to obtain the current year-week. Using this method allows the use of an alternate clock for testing. The alternate clock may be introduced using Clock dependency injection.
Params:
| Name | Type | Attribute | Description |
| clock | Clock | the clock to use, not null |
protected static _nowZoneId(zone: ZoneId): YearWeek source
Obtains the current year-week from the system clock in the specified time-zone.
This will query the Clock.system system clock to obtain the current year-week. Specifying the time-zone avoids dependence on the default time-zone.
Using this method will prevent the ability to use an alternate clock for testing because the clock is hard-coded.
Params:
| Name | Type | Attribute | Description |
| zone | ZoneId | the zone ID to use, not null |
protected static _ofWeekBasedYear(weekBasedYear: number, week: number): YearWeek source
Obtains an instance of YearWeek from a week-based-year and week.
If the week is 53 and the year does not have 53 weeks, week one of the following year is selected.
Params:
| Name | Type | Attribute | Description |
| weekBasedYear | number | the week-based-year to represent, from MIN_YEAR to MAX_YEAR |
|
| week | number | the week-of-week-based-year to represent, from 1 to 53 |
Throw:
if either field is invalid |
protected static _ofYearWeek(year: Year, week: number): YearWeek source
Obtains an instance of YearWeek from a year and week.
If the week is 53 and the year does not have 53 weeks, week one of the following year is selected.
Note that this class is based on the week-based-year which aligns to Monday to Sunday weeks,
whereas Year is intended to represent standard years aligned from January to December.
This difference may be seen at the start and/or end of the year.
This method treats the standard year as though it is the week-based-year.
Thus, YearWeek.of(Year.of(2020), 1)
creates an object where Monday and Tuesday of the week
are actually the last two days of 2019.
Params:
| Name | Type | Attribute | Description |
| year | Year | the year to represent, not null |
|
| week | number | the week-of-week-based-year to represent, from 1 to 53 |
Throw:
if the week value is invalid |
Public Methods
public adjustInto(temporal: Temporal): Temporal source
Adjusts the specified temporal object to have this year-week.
This returns a temporal object of the same observable type as the input with the week-based-year and week changed to be the same as this.
The adjustment is equivalent to using Temporal.with twice, passing IsoFields.WEEK_BASED_YEAR and IsoFields.WEEK_OF_WEEK_BASED_YEAR as the fields. If the specified temporal object does not use the ISO calendar system then a DateTimeException is thrown.
In most cases, it is clearer to reverse the calling pattern by using Temporal.with:
// these two lines are equivalent, but the second approach is recommended
temporal = thisYearWeek.adjustInto(temporal);
temporal = temporal.with(thisYearWeek);
This instance is immutable and unaffected by this method call.
Params:
| Name | Type | Attribute | Description |
| temporal | Temporal | the target object to be adjusted, not null |
Throw:
if unable to make the adjustment |
|
if numeric overflow occurs |
public atDay(dayOfWeek: DayOfWeek): LocalDate source
Combines this year-week with a day-of-week to create a LocalDate.
This returns a LocalDate formed from this year-week and the specified day-of-Week.
This method can be used as part of a chain to produce a date:
LocalDate date = yearWeek.atDay(MONDAY);
Params:
| Name | Type | Attribute | Description |
| dayOfWeek | DayOfWeek | the day-of-week to use, not null |
public compareTo(other: YearWeek): number source
Compares this year-week to another
The comparison is based first on the value of the year, then on the value of the week. It is "consistent with equals", as defined by Comparable.
Params:
| Name | Type | Attribute | Description |
| other | YearWeek | the other year-week to compare to, not null |
Return:
| number | the comparator value, negative if less, positive if greater |
public equals(obj: *): boolean source
Checks if this year-week is equal to another year-week.
Params:
| Name | Type | Attribute | Description |
| obj | * | the object to check, null returns false |
Return:
| boolean | true if this is equal to the other year-week |
public format(formatter: DateTimeFormatter): string source
Formats this year-week using the specified formatter.
This year-week will be passed to the formatter to produce a string.
Params:
| Name | Type | Attribute | Description |
| formatter | DateTimeFormatter | the formatter to use, not null |
Return:
| string | the formatted year-week string, not null |
Throw:
if an error occurs during printing |
public get(field: TemporalField): number source
Gets the value of the specified field from this year-week as an int
.
This queries this year-week for the value for the specified field. The returned value will always be within the valid range of values for the field. If it is not possible to return the value, because the field is not supported or for some other reason, an exception is thrown.
The value for the IsoFields.WEEK_BASED_YEAR WEEK_BASED_YEAR and IsoFields.WEEK_OF_WEEK_BASED_YEAR WEEK_OF_WEEK_BASED_YEAR fields is returned. All ChronoField instances will throw an UnsupportedTemporalTypeException.
Params:
| Name | Type | Attribute | Description |
| field | TemporalField | the field to get, not null |
Return:
| number | the value for the field |
Throw:
if a value for the field cannot be obtained or the value is outside the range of valid values for the field |
|
if the field is not supported or
the range of values exceeds an |
|
if numeric overflow occurs |
public getLong(field: TemporalField): number source
Gets the value of the specified field from this year-week as a long
.
This queries this year-week for the value for the specified field. If it is not possible to return the value, because the field is not supported or for some other reason, an exception is thrown.
The value for the IsoFields.WEEK_BASED_YEAR WEEK_BASED_YEAR and IsoFields.WEEK_OF_WEEK_BASED_YEAR WEEK_OF_WEEK_BASED_YEAR fields is returned. All ChronoField instances will throw an UnsupportedTemporalTypeException.
Params:
| Name | Type | Attribute | Description |
| field | TemporalField | the field to get, not null |
Return:
| number | the value for the field |
Throw:
if a value for the field cannot be obtained |
|
if the field is not supported |
|
if numeric overflow occurs |
public hashCode(): number source
A hash code for this year-week.
Return:
| number | a suitable hash code |
public is53WeekYear(): boolean source
Checks if the week-based-year has 53 weeks.
This determines if the year has 53 weeks, returning true. If false, the year has 52 weeks.
Return:
| boolean | true if the year has 53 weeks, false otherwise |
public isAfter(other: YearWeek): boolean source
Is this year-week after the specified year-week.
Params:
| Name | Type | Attribute | Description |
| other | YearWeek | the other year-week to compare to, not null |
Return:
| boolean | true if this is after the specified year-week |
public isBefore(other: YearWeek): boolean source
Is this year-week before the specified year-week.
Params:
| Name | Type | Attribute | Description |
| other | YearWeek | the other year-week to compare to, not null |
Return:
| boolean | true if this point is before the specified year-week |
public isSupported(fieldOrUnit: TemporalField | TemporalUnit): boolean source
function overloading for YearWeek.isSupported
- if called with an instance of TemporalField, then YearWeek._isSupportedField is executed,
- if called with an instance of TemporalUnit, then YearWeek._isSupportedUnit is executed,
- otherwise IllegalArgumentException is thrown.
Params:
| Name | Type | Attribute | Description |
| fieldOrUnit | TemporalField | TemporalUnit |
Return:
| boolean |
public lengthOfYear(): number source
Returns the length of the week-based-year.
This returns the length of the year in days, either 364 or 371.
Return:
| number | 364 if the year has 52 weeks, 371 if it has 53 weeks |
public minusWeeks(weeksToSubtract: number): YearWeek source
Returns a copy of this year-week with the specified number of weeks subtracted.
This instance is immutable and unaffected by this method call.
Params:
| Name | Type | Attribute | Description |
| weeksToSubtract | number | the weeks to subtract, may be negative |
public minusYears(yearsToSubtract: number): YearWeek source
Returns a copy of this year-week with the specified number of years subtracted.
If the week of this instance is 53 and the new year does not have 53 weeks, the week will be adjusted to be 52.
This instance is immutable and unaffected by this method call.
Params:
| Name | Type | Attribute | Description |
| yearsToSubtract | number | the years to subtract, may be negative |
public plusWeeks(weeksToAdd: number): YearWeek source
Returns a copy of this year-week with the specified number of weeks added.
This instance is immutable and unaffected by this method call.
Params:
| Name | Type | Attribute | Description |
| weeksToAdd | number | the weeks to add, may be negative |
public plusYears(yearsToAdd: number): YearWeek source
Returns a copy of this year-week with the specified number of years added.
If the week of this instance is 53 and the new year does not have 53 weeks, the week will be adjusted to be 52.
This instance is immutable and unaffected by this method call.
Params:
| Name | Type | Attribute | Description |
| yearsToAdd | number | the years to add, may be negative |
public query(query: TemporalQuery): * source
Queries this year-week using the specified query.
This queries this year-week using the specified query strategy object. The TemporalQuery object defines the logic to be used to obtain the result. Read the documentation of the query to understand what the result of this method will be.
The result of this method is obtained by invoking the TemporalQuery.queryFrom method on the specified query passing this as the argument.
Params:
| Name | Type | Attribute | Description |
| query | TemporalQuery | the query to invoke, not null |
Return:
| * | the query result, null may be returned (defined by the query) |
Throw:
if unable to query (defined by the query) |
|
if numeric overflow occurs (defined by the query) |
public range(field: TemporalField): ValueRange source
Gets the range of valid values for the specified field.
The range object expresses the minimum and maximum valid values for a field. This year-week is used to enhance the accuracy of the returned range. If it is not possible to return the range, because the field is not supported or for some other reason, an exception is thrown.
The range for the IsoFields.WEEK_BASED_YEAR WEEK_BASED_YEAR and IsoFields.WEEK_OF_WEEK_BASED_YEAR WEEK_OF_WEEK_BASED_YEAR fields is returned. All ChronoField instances will throw an UnsupportedTemporalTypeException.
Params:
| Name | Type | Attribute | Description |
| field | TemporalField | the field to query the range for, not null |
Throw:
if the range for the field cannot be obtained |
|
if the field is not supported |
public toString(): string source
Outputs this year-week as a String, such as 2015-W13
.
The output will be in the format YYYY-'W'ww
:
Return:
| string | a string representation of this year-week, not null |
public until(endExclusive: Temporal, unit: TemporalUnit): number source
Calculates the amount of time until another year-week in terms of the specified unit.
This calculates the amount of time between two YearWeek
objects in terms of a single TemporalUnit.
The start and end points are this and the specified year-week.
The result will be negative if the end is before the start.
The Temporal passed to this method is converted to a
YearWeek using YearWeek.from.
For example, the period in years between two year-weeks can be calculated
using startYearWeek.until(endYearWeek, YEARS)
.
The calculation returns a whole number, representing the number of complete units between the two year-weeks. For example, the period in years between 2012-W23 and 2032-W22 will only be 9 years as it is one week short of 10 years.
There are two equivalent ways of using this method. The first is to invoke this method. The second is to use TemporalUnit.between:
// these two lines are equivalent
amount = start.until(end, WEEKS);
amount = WEEKS.between(start, end);
The choice should be made based on which makes the code more readable.
The calculation is implemented in this method for units WEEKS and WEEK_BASED_YEARS. Other ChronoUnit values will throw an exception.
If the unit is not a ChronoUnit, then the result of this method is obtained by invoking TemporalUnit.between passing this as the first argument and the converted input temporal as the second argument.
This instance is immutable and unaffected by this method call.
Params:
| Name | Type | Attribute | Description |
| endExclusive | Temporal | the end date, exclusive, which is converted to a YearWeek, not null |
|
| unit | TemporalUnit | the unit to measure the amount in, not null |
Return:
| number | the amount of time between this year-week and the end year-week |
Throw:
if the amount cannot be calculated, or the end temporal cannot be converted to a YearWeek |
|
if the unit is not supported |
|
if numeric overflow occurs |
public week(): number source
Gets the week-of-week-based-year field.
This method returns the primitive int
value for the week of the week-based-year.
Return:
| number | the week-of-week-based-year |
public withWeek(week: number): YearWeek source
Returns a copy of this YearWeek with the week altered.
This returns a year-week with the specified week-of-week-based-year. If the new week is 53 and the year does not have 53 weeks, week one of the following year is selected.
This instance is immutable and unaffected by this method call.
Params:
| Name | Type | Attribute | Description |
| week | number | the week-of-week-based-year to set in the returned year-week |
Throw:
if the week-of-week-based-year value is invalid |
public withYear(weekBasedYear: number): YearWeek source
Returns a copy of this YearWeek with the week-based-year altered.
This returns a year-week with the specified week-based-year. If the week of this instance is 53 and the new year does not have 53 weeks, the week will be adjusted to be 52.
This instance is immutable and unaffected by this method call.
Params:
| Name | Type | Attribute | Description |
| weekBasedYear | number | the week-based-year to set in the returned year-week |
Throw:
if the week-based-year value is invalid |
public year(): number source
Gets the week-based-year field.
This method returns the primitive int
value for the week-based-year.
Note that the ISO week-based-year does not align with the standard Gregorian/ISO calendar year.
Return:
| number | the week-based-year |
Protected Methods
protected _isSupportedField(field: TemporalField): boolean source
Checks if the specified field is supported.
This checks if this year-week can be queried for the specified field. If false, then calling the YearWeek.range range and YearWeek.get get methods will throw an exception.
The supported fields are:
If the field is not a ChronoField, then the result of this method is obtained by invoking TemporalField.isSupportedBy passing this as the argument. Whether the field is supported is determined by the field.
Params:
| Name | Type | Attribute | Description |
| field | TemporalField | the field to check, null returns false |
Return:
| boolean | true if the field is supported on this year-week, false if not |
protected _isSupportedUnit(unit: TemporalUnit): boolean source
Checks if the specified unit is supported.
This checks if the specified unit can be added to, or subtracted from, this date-time. If false, then calling the YearWeek.plus and YearWeek.minus minus methods will throw an exception.
The supported units are:
- ChronoUnit.WEEKS
- IsoFields.WEEK_BASED_YEARS
All other ChronoUnit instances will return false.
If the unit is not a ChronoUnit, then the result of this method is obtained by invoking TemporalUnit.isSupportedBy passing this as the argument. Whether the unit is supported is determined by the unit.
Params:
| Name | Type | Attribute | Description |
| unit | TemporalUnit | the unit to check, null returns false |
Return:
| boolean | true if the unit can be added/subtracted, false if not |